首页 > Python3教程 > Python扩展程序库 -- NumPy

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

 

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。