如何正确屏蔽两个NumPy数组?例如,我想找到不等于255
的pe
值。我还希望我所需的输出数组与pd
和pe
相同大小,即(7, 7)
并填充0's
。
实现这一目标的最有效方法是什么?
import numpy as np
pd = np.random.randint(254,256, size=(7,7))
pe = np.random.randint(0,7, size=(7,7))
期望输出值
[[6 6 0 0 6 6 1]
[2 6 1 1 5 6 3]
[3 4 6 6 3 5 6]
[3 5 0 3 2 0 0]
[0 3 6 1 3 6 1]
[6 3 4 1 0 3 1]
[6 0 4 2 2 6 4]]
多谢
逻辑索引似乎是最简单的选择。
import numpy as np
pd = np.random.randint(254,256, size=(7,7))
pe = np.random.randint(0,7, size=(7,7))
pe[pd == 255] = 0
[[3 6 0 2 0 0 0]
[0 3 4 5 2 0 5]
[0 0 6 0 1 0 5]
[0 3 0 4 0 6 0]
[2 0 0 0 0 0 0]
[2 0 4 0 0 0 5]
[0 0 3 0 2 4 0]]
根据您的数据大小,您可以尝试其他选项:
pe = np.where(pd == 255, 0, pe)
# OR
pe = pe * (pd == 255)
但是我猜索引仍然是简单和快速的。