numpy.recarray.flags#

属性

recarray.flags#

关于数组内存布局的信息。

说明

可以通过类似字典的方式访问 flags 对象(例如 a.flags['WRITEABLE']),或者使用小写的属性名称(例如 a.flags.writeable)。 短标志名称仅支持在字典访问中使用。

只有 WRITEBACKIFCOPY、WRITEABLE 和 ALIGNED 标志可以通过直接赋值给属性或字典条目,或调用 ndarray.setflags 来由用户更改。

数组标志不能随意设置

  • WRITEBACKIFCOPY 只能设置为 False

  • 只有当数据真正对齐时,ALIGNED 才能设置为 True

  • 只有当数组拥有自己的内存或内存的最终所有者公开可写缓冲区接口或为字符串时,WRITEABLE 才能设置为 True

数组可以同时是 C 风格的连续数组和 Fortran 风格的连续数组。 这对于一维数组是显而易见的,但对于更高维的数组也可能成立。

即使对于连续的数组,如果 arr.shape[dim] == 1 或数组没有元素,给定维度的步长 arr.strides[dim] 也可能是任意的。 对于 C 风格的连续数组,self.strides[-1] == self.itemsize 或对于 Fortran 风格的连续数组,self.strides[0] == self.itemsize 一般来说成立。

属性:
C_CONTIGUOUS (C)

数据位于一个单一的、C 风格的连续段中。

F_CONTIGUOUS (F)

数据位于一个单一的、Fortran 风格的连续段中。

OWNDATA (O)

数组拥有它使用的内存或从另一个对象借用它。

WRITEABLE (W)

数据区域可以写入。 将此设置为 False 会锁定数据,使其成为只读。 视图(切片等)在创建时从其基本数组继承 WRITEABLE,但可写数组的视图随后可能会被锁定,而基本数组仍然可写。(反之则不然,锁定数组的视图不能设置为可写。但是,目前,锁定基本对象不会锁定任何已经引用它的视图,因此在这种情况下,可以通过之前创建的可写视图来更改锁定数组的内容。) 尝试更改不可写数组会引发 RuntimeError 异常。

ALIGNED (A)

数据和所有元素都为硬件适当对齐。

WRITEBACKIFCOPY (X)

此数组是其他某个数组的副本。 在取消分配之前必须调用 C-API 函数 PyArray_ResolveWritebackIfCopy,以使用此数组的内容更新基本数组。

FNC

F_CONTIGUOUS 且非 C_CONTIGUOUS。

FORC

F_CONTIGUOUS 或 C_CONTIGUOUS(单段测试)。

BEHAVED (B)

ALIGNED 且 WRITEABLE。

CARRAY (CA)

BEHAVED 且 C_CONTIGUOUS。

FARRAY (FA)

BEHAVED 且 F_CONTIGUOUS 且非 C_CONTIGUOUS。