30分钟
ndarray 对象的内存结构
ndarray
对象在内存中的结构如下:
可以看到:该数组中元素类型为float32
;该数组有2 个轴。每个轴的长度都是 3 个元素。第 0 轴增加1时,下标增加 12字节(也就是 3个元素,即一行的距离); 第 1 轴增加 1时,下标增加 4字节(也就是一个元素的距离)。
2. 元素在数据存储区中的排列格式有两种:C
语言格式和Fortran
语言格式。
C
语言中,多维数组的第 0 轴是最外层的。即 0 轴的下标增加 1时,元素的地址增加的字节数最多Fortran
语言中,多维数组的第 0 轴是最内层的。即 0 轴的下标增加 1时,元素的地址增加的字节数最少
numpy
中默认是以 C
语言格式存储数据。如果希望改为Fortran
格式,则只需要在创建数组时,设置order
参数为"F"
3. 数组的flags
属性描述了数据存储区域的一些属性。你可以直接查看flags
属性,也可以单独获取其中某个标志值。
C_CONTIGUOUS
:数据存储区域是否是C
语言格式的连续区域F_CONTIGUOUS
:数据存储区域是否是F
语言格式的连续区域OWNDATA
:数组是否拥有此数据存储区域。当一个数组是其他数组的视图时,它并不拥有数据存储区域,通过视图数组的base
属性可以获取保存数据存储区域的那个原始数组。
4. 数组的转置可以通过其T
属性获取。转置数组可以简单的将其数据存储区域看作是Fortran
语言格式的连续区域,并且它不拥有数据存储区域。
5. 修改数组的内容时,会直接修改数据存储区域。所有使用该数据存储区域的数组都将被同时修改!
学员评价