numpy.memmap.flags#
属性
- memmap.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。