不能改变由布尔索引过滤的Numpy数组元素



可复制代码:

x = np.array([0.9, 0.9, 1])
y = np.array([0, 0, 1])
y[x<1] = 1 - x[x<1]
print(y)

输出
array([0, 0, 1])

所需输出

array([0.1, 0.1, 1])

我知道np.where会得到我想要的输出。我只是好奇为什么布尔索引在这种情况下不起作用。

必须指定y的dtype:

y = np.array([0, 0, 1], dtype=np.float64)

当你没有指定它时,它假设整数作为dtype。因此,对这个数组的每次修改都将转换为该数组的原始dtype。

最新更新