NumPy:ndarray 数组属性

在使用 NumPy 进行科学计算或数据分析时,数组对象不仅存储数据本身,还包含描述数组结构与内存布局的信息,这些信息被称为数组属性(array attributes)。

通过这些属性,我们可以了解数组的维度结构、元素数量、数据类型以及内存占用情况,从而更好地理解数组的内部结构与计算行为。

NumPy 的数组属性主要通过 ndarray 对象的属性(attributes)提供访问接口。与函数不同,这些属性通常不需要调用,而是直接读取。

例如:

go 复制代码
arr.shapearr.dtype

按照功能划分,NumPy 的数组属性通常可以分为四类:

(1)结构属性

(2)类型属性

(3)大小与内存属性

(4)底层布局属性

一、结构属性

结构属性用于描述数组的维度结构与形状信息。

shape

返回数组在每个维度上的长度(元组)。

go 复制代码
ndarray.shape

示例:

php 复制代码
import numpy as np
a = np.array([[1,2,3],              [4,5,6]])
print(a.shape)

输出:

go 复制代码
(2, 3)

表明这是一个 2 行 3 列的矩阵。

ndim

返回数组的维度数(整数)。

go 复制代码
ndarray.ndim

示例:

php 复制代码
a = np.array([[1,2,3],              [4,5,6]])
print(a.ndim)

输出:

go 复制代码
2

表明该数组是二维数组。

size

返回数组中包含的元素总数(整数)。

go 复制代码
ndarray.size

示例:

php 复制代码
a = np.array([[1,2,3],              [4,5,6]])
print(a.size)

输出:

go 复制代码
6

说明:元素数量 = 所有维度长度的乘积。

二、类型属性

类型属性用于描述数组中元素的数据类型。

dtype

返回数组元素的数据类型(NumPy 的 dtype 对象)。

go 复制代码
ndarray.dtype

示例:

apache 复制代码
a = np.array([1,2,3])
print(a.dtype)

输出:

go 复制代码
int64

说明:

NumPy 使用统一的数据类型系统(dtype),不同于 Python 的动态对象类型。

详情请参阅:

NumPy:dtype 数据类型

itemsize

返回每个元素所占的字节数(整数)。

go 复制代码
ndarray.itemsize

示例:

apache 复制代码
a = np.array([1,2,3], dtype=np.int32)
print(a.itemsize)

输出:

go 复制代码
4

表明 int32 类型占用 4 字节。

三、大小与内存属性

这些属性用于描述数组整体的存储规模。

nbytes

返回数组元素所占的总字节数(整数)。

go 复制代码
ndarray.nbytes

示例:

apache 复制代码
a = np.array([1,2,3,4], dtype=np.int32)
print(a.nbytes)

输出:

go 复制代码
16

说明:nbytes = size × itemsize。

四、底层布局属性

NumPy 数组在内存中以字节序列的形式存储,并通过 stride 机制描述各维度的访问步长。某些数组(如切片或转置结果)在内存中可能并不是连续存储。

以下属性用于描述数组在内存中的布局方式。

strides

数组在各维度上的步长(stride)。返回一个元组,表示在每个维度上移动一个索引单位时需要跨越的字节数。

go 复制代码
ndarray.strides

示例:

php 复制代码
a = np.array([[1,2,3],              [4,5,6]])
print(a.strides)

示例输出:

go 复制代码
(24, 8)

这表明:沿第 0 个维度(行方向)移动一个元素时,需要跨越 24 字节;沿第 1 个维度(列方向)移动一个元素时,需要跨越 8 字节。

T

返回数组的转置结果(transpose),通常返回一个视图而不是新的数据副本。

go 复制代码
ndarray.T

示例:

php 复制代码
a = np.array([[1,2,3],              [4,5,6]])
print(a.T)

输出:

css 复制代码
[[1 4] [2 5] [3 6]]

说明:转置操作交换数组的行与列。

五、数组属性综合示例

示例:

php 复制代码
import numpy as np
a = np.array([[10,20,30],              [40,50,60]], dtype=np.int32)
print("shape:", a.shape)print("ndim:", a.ndim)print("size:", a.size)print("dtype:", a.dtype)print("itemsize:", a.itemsize)print("nbytes:", a.nbytes)print("strides:", a.strides)

输出示例:

apache 复制代码
shape: (2, 3)ndim: 2size: 6dtype: int32itemsize: 4nbytes: 24strides: (12, 4)

📘 小结

NumPy 数组对象提供了一组属性,用于描述数组的结构、类型以及内存布局。结构属性(shape、ndim、size)用于描述数组维度;类型属性(dtype、itemsize)用于说明元素类型;大小属性(nbytes)用于表示内存占用;底层属性(strides、T)反映数组在内存中的布局与视图关系。理解这些属性,有助于更深入地掌握 NumPy 数组的内部结构与计算机制。

"点赞有美意,赞赏是鼓励"

相关推荐
隔壁大炮1 天前
Day06-08.CNN概述介绍
人工智能·pytorch·深度学习·算法·计算机视觉·cnn·numpy
光之后裔1 天前
Numpy以及Pytorch中多维数组的维度数与维度值以及轴axis理解
pytorch·python·numpy
隔壁大炮2 天前
Day02-13.张量的拼接操作
人工智能·pytorch·深度学习·神经网络·numpy
爱喝热水的呀哈喽3 天前
5步创建一个有不同numpy scipy版本的python环境
python·numpy·scipy
陶陶然Yay4 天前
神经网络常见层Numpy封装参考(5):其他层
人工智能·神经网络·numpy
2501_921960854 天前
协同本体论:元公理体系、普适演化律则与工程范式统一构建
python·重构·numpy·pandas·scipy
陶陶然Yay4 天前
神经网络常见层Numpy封装参考(6):卷积层
人工智能·神经网络·numpy
qq_283720055 天前
Python3 模块精讲:NumPy 从入门到精通全攻略
numpy
小糖学代码7 天前
LLM系列:2.pytorch入门:2.PyTorch张量运算
pytorch·python·aigc·numpy
啦啦啦_999910 天前
Numpy
numpy