我有一个(m,n,3)
的数组 data
,我想用一个 (m,n)
的掩码来过滤其值,以获得一个 (x,3)
的 output
数组。
下面的代码可以工作,但我该如何用更高效的替代循环呢?
import numpy as np
data = np.array([
[[11, 12, 13], [14, 15, 16], [17, 18, 19]],
[[21, 22, 13], [24, 25, 26], [27, 28, 29]],
[[31, 32, 33], [34, 35, 36], [37, 38, 39]],
])
mask = np.array([
[False, False, True],
[False, True, False],
[True, True, False],
])
output = []
for i in range(len(mask)):
for j in range(len(mask[i])):
if mask[i][j] == True:
output.append(data[i][j])
output = np.array(output)
期望输出结果为:
np.array([[17, 18, 19], [24, 25, 26], [31, 32, 33], [34, 35, 36]])
data[mask]
?我有什么遗漏吗? - Sayandip Dutta