将可屏蔽的视图写入记录数组

我不确定这里是否使用了正确的词汇,但是我有一个用例,可以将可写视图创建到numpy记录数组中。我看到numpy的行为方式存在差异,具体取决于我如何进行选择。以下代码段是一个最小的示例。

import numpy as np

a = np.asarray([(True,1),(False,2),(True,3),4)],dtype=np.dtype([('b','b1'),('i','i4')]))
mask = a['b']

a[mask]['i'] = 0
print((a[mask]['i'] == 0).all())  # this is false

a['i'][mask] = 0
print((a[mask]['i'] == 0).all())  # this is true

这是预期的行为还是错误?是否还有其他方法可以生成避免复制数据的子记录数组?

lyloney 回答:将可屏蔽的视图写入记录数组

好的,这是交易。第一次使用蒙版时,它会创建数组的副本,因此,当您尝试更改a中的值时。 a未被更改,因为更改仅影响副本。

您可以详细了解here

本文链接:https://www.f2er.com/3123227.html

大家都在问