python - UPDATEIFCOPY 标志是否为真?

标签 python numpy

我正在尝试更深入地了解 numpy 数组;特别是内存布局/所有权/共享相关方面。在那次努力中,我偶然发现了 UPDATEIFCOPY 标志,这听起来很有趣。 只是我从来没有真正见过它。 用户只能 unset它。如果你喜欢安静,谷歌搜索“UPDATEIFCOPY True”会非常放松。

那么如何创建一个将该标志设置为 True 的数组?

最佳答案

使用np.nditer时可以设置if (示例取自 NumPy source code ):

>>> import numpy as np
>>> a = np.zeros((6*4+1,), dtype='i1')[1:]
>>> a.dtype = 'f4'
>>> a[:] = np.arange(6, dtype='f4')
>>> i = np.nditer(a, [], [['readwrite', 'updateifcopy', 'aligned']])
>>> print(i.operands[0].flags)
  C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : True     # <--- :-)

但是我不知道这是在什么情况下真正设置的,因为如果我删除前两行,它就不再起作用了:

>>> import numpy as np

>>> a = np.arange(6, dtype='f4')
>>> i = np.nditer(a, [], [['readwrite', 'updateifcopy', 'aligned']])
>>> print(i.operands[0].flags)
  C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False     # <--- :-(

关于python - UPDATEIFCOPY 标志是否为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41952401/

相关文章:

python - 比较 dtype 对象的 numpy 数组

python - 将结果与二次回归混淆

javascript - 如何让合金在数据集上运行以检查所有规则

python - 简单的实现的人体轮廓提取方法(python,opencv)

python - flask-migrate 不检测模型

Python 3,添加两个字典并在与两个字典都有的键关联的列表中添加项目

python - 在任意维度上用 numpy 数组索引 numpy 数组

python - Eclipse PyDev 错误消息 "compiled extension"

Python如何使用浮点值对列表进行排序

python - Numpy:用同一行中其他元素的最大值替换一行中的每个元素