课程评价 (0)

请对课程作出评价:
0/300

学员评价

暂无精选评价
30分钟

ndarray 对象的内存结构

  1. 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. 修改数组的内容时,会直接修改数据存储区域。所有使用该数据存储区域的数组都将被同时修改!