遮罩索引后保持二维阵列形状

时间:2018-10-15 14:36:07

标签: python numpy

我有两个numpy数组,a.shape为[2,1000,1000],b.shape为[1000,1000]。

b中有0和1。我想使用它们索引a的第一维并输出1000,1000大小的数组。到目前为止,我尝试过的方法无法保持原始数组的形状。

2 个答案:

答案 0 :(得分:1)

扭曲先前建议的答案(输入矩阵大小为10而不是1000 ...):

a = np.random.rand(2, 10, 10)
b = np.random.rand(10, 10) > 0.5  # created a random mask

c = np.zeros(b.shape)
c[b == 0] = a[0, :, :][b == 0]
c[b == 1] = a[1, :, :][b == 1]

答案 1 :(得分:1)

在这种情况下,您可以

...--F--G--H   <-- master (HEAD)
            \
             I
              \
               J--K   <-- branch2

一种更通用的方法也适用,当a没有两层而是n层时

branch1