掩码NumPy数组,并在满足条件的地方提取值



如何正确屏蔽两个NumPy数组?例如,我想找到不等于255pe值。我还希望我所需的输出数组与pdpe相同大小,即(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)

但是我猜索引仍然是简单和快速的。

相关内容

  • 没有找到相关文章

最新更新