ndarray属性反映数组本身信息,通过访问属性访问或设置数组内部信息。
ndarray属性包括内存布局属性、数据类型属性、其他属性。
ndarray的内存布局属性如下:
NO | 内存布局属性 | 描述 |
---|---|---|
1 | flags | 关于数组内存布局的信息 |
2 | shape | 表示数组维度大小的元组 |
3 | strides | 遍历数组时每个维度步进的字节元组 |
4 | ndim | 数组维度,轴 |
5 | data | 指向数组数据开头的Python缓存区对象 |
6 | size | 数组的元素个数 |
7 | itemsize | 一个元素的长度(单位字节) |
8 | nbytes | 数组元素的总字节数 |
9 | base | 如果内存来自其他对象,则为基础对象 |
描述
ndarray.flags获取ndarray对象的内存信息,包括如下属性信息:
NO | 属性 | 描述 |
---|---|---|
1 | C_CONTIGUOUS © | 数据是在一个单一的C风格的连续段中 |
2 | F_CONTIGUOUS (F) | 数据是在一个单一的Fortran风格的连续段中 |
3 | OWNDATA (O) | 数组拥有它所使用的内存或从另一个对象中借用它 |
4 | WRITEABLE (W) | 数据区域可以被写入,将该值设置为 False,则数据为只读 |
5 | ALIGNED (A) | 数据和所有元素都适当地对齐到硬件上 |
6 | UPDATEIFCOPY (U) | 这个数组是其它数组的一个副本,当这个数组被释放时,原数组的内容将被更新 |
示例
>>> import numpy as np
>>> arr=np.array([1,2,3])
>>> arr
array([1, 2, 3])
# arr.flags 获取数组内存信息
>>> arr.flags
C_CONTIGUOUS : True
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
# 通过字典形式访问内存信息
>>> arr.flags['C_CONTIGUOUS']
True
# 通过点号+小写属性名,访问内存信息
>>> arr.flags.c_contiguous
True
描述
ndarray.ndim获取NumPy数组的维度数量或称为轴数量,称为秩(rank)。
在NumPy中每一个线性的数组称为一个维度(dimensions)或一个轴((axis)。
一维数组的每个元素都是单个数字或字符串,轴数为1,最外层1个[]。
二维数组的每个元素都是一个一维数组,轴数2,最外层2个[]。
三维数组的每个元素都是一个二维数组。轴数3,最谓词3个[]。
示例
>>> import numpy as np
# 一维数组,每个元素都是单个数字或单个字符串
>>> ar1=np.array([1,2,3])
# 二维数组,每个元素都是单个数字
>>> ar2=np.array([[1,2,3]])
# 三维数组,每个元素都是二维数组
>>> ar3=np.array([[[1,2,3]]])
>>> ar1
array([1, 2, 3])
>>> ar2
array([[1, 2, 3]])
>>> ar3
array([[[1, 2, 3]]])
# 一维数数组轴数为1,最外层1个[]
>>> ar1.ndim
1
# 二维数数组轴数为2,最外层2个[]
>>> ar2.ndim
2
# 三维数数组轴数为3,最外层3个[]
>>> ar3.ndim
3
描述
ndarray.shape返回表示数组各轴大小的元组。
轴的大小表示相同维度的元素的个数。
示例
>>> import numpy as np
>>> ar1=np.array([1,2,3])
>>> ar2=np.array([[1,2,3],[5,6,7]])
>>> ar3=np.array([[[1,2,3],[5,6,7]]])
>>> ar1.shape
(3,)
>>> ar2.shape
(2, 3)
# shape 返回 每个轴的大小组成的元组
# 轴的大小表示相同维度的元素的个数
# 轴从外到内统计大小
# 最外层,三维数组有1个二维数组[[1,2,3],[5,6,7]],元素个数为1
# 次外层,二维数组有2个一维数组[1,2,3],[5,6,7],元素个数为2
# 最内层,一维数组有3个元素
>>> ar3.shape
(1, 2, 3)
描述
ndarray.size返回数组的元素总个数。
示例
>>> import numpy as np
>>> ar1=np.array([1,2,3])
>>> ar2=np.array([[1,2,3],[5,6,7]])
>>> ar3=np.array([[[1,2],[3,5]],[[6,7],[8,9]]])
# ndarray.size返回数组的元素总个数
>>> ar1.size
3
>>> ar2.size
6
>>> ar3.size
8
描述
ndarray.itemsize返回一个元素的字节长度(大小)。
示例
>>> import numpy as np
>>> ar3=np.array([[[1,2],[3,5]],[[6,7],[8,9]]])
# itemsize 返回元素的字节长度
>>> ar3.itemsize
4
# dtype 返回元素类型,int32为4字节
>>> ar3.dtype
dtype('int32')
描述
ndarray.nbytes返回数组元素的总字节长度(大小)。
通过nbytes/itemsize获取元素总个数。
示例
>>> import numpy as np
>>> ar3=np.array([[[1,2],[3,5]],[[6,7],[8,9]]])
# nbytes 返回数组元素的总字节长度
>>> ar3.nbytes
32
>>> ar3.itemsize
4
# 通过nbytes/itemsize获取元素总个数
>>> ar3.nbytes/ar3.itemsize
8.0
# 与 size 相同
>>> ar3.size
8