numpy.ndarray.flags#

属性

ndarray.flags#

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

备注

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

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

数组标志不能随意设置:

  • WRITEBACKIFCOPY 只能设置为 False.

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

  • WRITEABLE 只能在数组拥有自己的内存或内存的最终所有者暴露可写的缓冲区接口或是一个字符串时,才能被设置为 True.

数组可以是C风格和Fortran风格连续的.这对于一维数组是显而易见的,但对于高维数组也可能是正确的.

即使对于连续数组,给定维度 arr.strides[dim] 的步幅可能是 任意的 如果 arr.shape[dim] == 1 或者数组没有元素.通常情况下,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.