如何仅获得掩盖的数据而不将数据展平为一维数组?也就是说,假设我有一个numpy数组
a = np.array([[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3]])
我遮盖了所有大于1的元素
b = ma.masked_greater(a, 1)
masked_array(data =
[[0 1 -- --]
[0 1 -- --]
[0 1 -- --]],
mask =
[[False False True True]
[False False True True]
[False False True True]],
fill_value = 999999)
如何仅获得被遮罩的元素而不使输出变平?也就是说,我需要
array([[ 2, 3],
[2, 3],
[2, 3]])
最佳答案
将两个列表压缩在一起,然后将它们过滤掉:
data = [[0, 1, 1, 1], [0, 1, 1, 1], [0, 1, 1, 1]]
mask = [[False, False, True, True],
[False, False, True, True],
[False, False, True, True]]
zipped = zip(data, mask) # [([0, 1, 1, 1], [False, False, True, True]), ([0, 1, 1, 1], [False, False, True, True]), ([0, 1, 1, 1], [False, False, True, True])]
masked = []
for lst, mask in zipped:
pairs = zip(lst, mask) # [(0, False), (1, False), (1, True), (1, True)]
masked.append([num for num, b in pairs if b])
print(masked) # [[1, 1], [1, 1], [1, 1]]
或更简洁地:
zipped = [...]
masked = [[num for num, b in zip(lst, mask) if b] for lst, mask in zipped]
print(masked) # [[1, 1], [1, 1], [1, 1]]
关于python - python numpy获取蒙版数据而无需展平,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34468436/