numpy.matrix.flags#

属性

matrix.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-连续且非 C-连续。

FORC

F-连续或 C-连续(单段测试)。

BEHAVED (B)

对齐且可写。

CARRAY (CA)

行为良好且 C-连续。

FARRAY (FA)

行为良好、F-连续且非 C-连续。