NumPy 数组属性
了解 NumPy 数组的一些基本属性
NumPy 数组属性
NumPy 数组的维数称为秩(rank),一维数组的秩为 1,二维数组的秩为 2,以此类推。
在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。
所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。
axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。
重要 ndarray 对象属性有:
| 属性 | 说明 |
|---|---|
| ndarray.ndim | 秩,即轴的数量或维度的数量 |
| ndarray.shape | 数组的维度,对于矩阵,n 行 m 列 |
| ndarray.size | 数组元素的总个数,相当于 .shape 中 n*m 的值 |
| ndarray.dtype | ndarray 对象的元素类型 |
| ndarray.itemsize | ndarray 对象中每个元素的大小,以字节为单位 |
| ndarray.flags | ndarray 对象的内存信息 |
| ndarray.real | ndarray元素的实部 |
| ndarray.imag | ndarray 元素的虚部 |
| ndarray.data | 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。 |
ndarray.ndim
ndarray.ndim 返回数组的维数,等于秩。
ndarray.shape
ndarray.shape 表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 ndim 属性(秩)。比如,一个二维数组,其维度表示"行数"和"列数"。
ndarray.shape 也可以用于调整数组大小。NumPy 也提供了reshape函数来调整数组大小。
ndarray.itemsize
ndarray.itemsize 返回数组中每一个元素以字节为单位的大小。
如,一个元素类型为 float64 的数组 itemsiz 属性值为 8(float64 占用 64 个 bits,每个字节长度为 8,所以 64/8,占用 8 个字节),又如,一个元素类型为 complex32 的数组 item 属性为 4(32/8)。
ndarray.flags
ndarray.flags 返回 ndarray 对象的内存信息,有以下属性:
| 序号 | 属性及描述 |
|---|---|
| 1. | C_CONTIGUOUS (C) 数组位于单一的、C 风格的连续区段内 |
| 2. | F_CONTIGUOUS (F) 数组位于单一的、Fortran 风格的连续区段内 |
| 3. | OWNDATA (O) 数组的内存从其它对象处借用 |
| 4. | WRITEABLE (W) 数据区域可写入。 将它设置为flase会锁定数据,使其只读 |
| 5. | ALIGNED (A) 数据和任何元素会为硬件适当对齐 |
| 6. | UPDATEIFCOPY (U) 这个数组是另一数组的副本。当这个数组释放时,源数组会由这个数组中的元素更新 |
代码实例
import numpy as np
a1 = np.array([1, 2, 3, 4, 5, 6], dtype=np.complex128)
print(a1)
# 打印数组数据类型
print("数据类型", type(a1)) # 数据类型 <class 'numpy.ndarray'>
# 打印数组元素数据类型
print("数组元素数据类型:", a1.dtype) # complex128
# 打印数组尺寸,即数组元素总数
print("数组元素总数:", a1.size) # 数组元素总数: 6
# 打印数组形状
print("数组形状:", a1.shape) # 数组形状: (6,)
# 打印数组的维度数目
print("数组的维度数目", a1.ndim) # 数组的维度数目 1
# 每个元素的字节单位长度
print (a1.itemsize) # 16
a = np.array([[1,2,3],[4,5,6]])
print(a.size) # 6
print(a.shape) # (2, 3)
a.shape = (3,2)
print(a)
# [[1 2]
# [3 4]
# [5 6]]
# 对象拥有的属性
print (a.flags)
# C_CONTIGUOUS : True
# F_CONTIGUOUS : False
# OWNDATA : True
# WRITEABLE : True
# ALIGNED : True
# WRITEBACKIFCOPY : False
# UPDATEIFCOPY : False

相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型