当我们读取数据创建了一个NumPy的多维数组时,很多时候,我们并不能直观了解这个多维数组对象的内部存储结构。为了能够更好地对多维数组对象进行操作,了解多维数组对象的结构是很有必要的,好在NumPy多维数组中存储了几个描述数组结构和内容的核心属性。本文就来聊一下ndarray中的这些属性。
本文的内容有:
1、shape属性
2、dtype属性
3、ndim属性
4、size属性
5、itemsize属性
6、nbytes属性
7、T属性
shape属性要了解一个ndarray的结构,形状shape属性,可以说是最为关键的一个属性。尤其在进行矩阵运算、神经网络构建、图像处理等领域,都需要首先关注数组的形状。
ndarray对象的shape属性中存储的是一个元组,元组中的每一个元素是对应维度的大小。
dtype属性了解一个数组,除了数组的形状外,另一个核心的属性,就是数组中元素的数据类型了。因为,要对数组进行操作,不同的数据类型在操作上会有些细微的差异。
ndarray的属性dtype返回元素的数据类型,NumPy支持多种数据类型,比如整型、浮点型、布尔型等。前面在创建ndarray时,可以看到若不指定dtype属性,NumPy会根据提供的数据自动推断数据类型。
在笔者的系统环境中,整型的默认dtype为'int64',浮点型的默认dtype为'float64'。
以下是一些常见的dtype取值及其描述:
需要说明的是,在创建ndarray时,如果要指定元素数据类型,我们可以通过numpy.int64的方式进行指定,也可以使用对应的字符串形式,比如'int64'。
字符串形式还有对应的简写方式,这里就不一一列举,可以自行查阅相关文档。
ndim属性除了shape和dtype属性之外,其他的属性,基本可以从这两个属性进行计算推到出来。
ndim属性,返回的是数组的维数(也称之为数组的轴数),是一个整数。等价于shape属性的长度。
size属性size属性返回的是数组中元素的总个数,即数组中所谓维度的大小的乘积,也是可以由shape属性推导出来的。
itemsize属性itemsize属性,描述的是数组中每个元素所占用的字节数,以字节为单位。所以,该属性是可以通过dtype属性进行推导的。
从这里,也可以看出,dtype字符串缩写的形式,后面的数字,其实是描述的字节数。
nbytes属性nbytes属性返回的是数组占用的总字节数,也就是size乘以itemsize。
T属性T属性,其实用得相对较少,它描述的是一个矩阵的转置的概念。对一个矩阵进行转置,可以简单理解为行变列、列变行。
总结本文分别介绍了多维数组ndarray对象中的shape、dtype、ndim、size、itemsize、nbytes、T等属性。并对各个属性的含义及用法通过代码进行了演示说明。需要指出的是,shape和dtype是最核心的两个属性,其他属性均可以基于这两个属性进行计算推导。
以上就是本文的全部内容,感谢您的拨冗阅读,希望您对ndarry的结构有了更进一步的认识。