Arrays 屏蔽多维数组-numpy
我有两个大小相同的数组Arrays 屏蔽多维数组-numpy,arrays,numpy,multidimensional-array,Arrays,Numpy,Multidimensional Array,我有两个大小相同的数组(2,3,2) 存储在多维数组中 >>> a = np.array([[[[ 1, 1], [ 7, 7]], [[ 2, 2], [ 8, 8]], [[ 3, 3], [ 9, 9]]], [[[ 4, 4], [10, 10]],
(2,3,2)
存储在多维数组中
>>> a = np.array([[[[ 1, 1],
[ 7, 7]],
[[ 2, 2],
[ 8, 8]],
[[ 3, 3],
[ 9, 9]]],
[[[ 4, 4],
[10, 10]],
[[ 5, 5],
[11, 11]],
[[ 6, 6],
[12, 12]]]])
>>> a.shape
(2, 3, 2, 2)
我试图用m
屏蔽a
中的子数组:
>>> m = np.array([[[1, 0],
[0, 0],
[1, 1]],
[[1, 1],
[0, 1],
[0, 0]]])
这将导致:
[[[[ 1, 1],
[ 0, 0]
[ 0, 0],
[ 0, 0],
[ 3, 3],
[ 9, 9]]
[[ 4, 4],
[10, 10],
[ 0, 0],
[11, 11],
[ 0, 0],
[ 0, 0]]]
我尝试使用np.concatenate
和np.append
例如,np.prod(np.concatenate([a,m],axis=0))
但是我的解决方案都不起作用。扩展了
m
的维度,因此它使用a
进行广播:
In [183]: a*m[...,None]
Out[183]:
array([[[[ 1, 1],
[ 0, 0]],
[[ 0, 0],
[ 0, 0]],
[[ 3, 3],
[ 9, 9]]],
[[[ 4, 4],
[10, 10]],
[[ 0, 0],
[11, 11]],
[[ 0, 0],
[ 0, 0]]]])
扩展
m
的维度,使其与a
一起广播:
In [183]: a*m[...,None]
Out[183]:
array([[[[ 1, 1],
[ 0, 0]],
[[ 0, 0],
[ 0, 0]],
[[ 3, 3],
[ 9, 9]]],
[[[ 4, 4],
[10, 10]],
[[ 0, 0],
[11, 11]],
[[ 0, 0],
[ 0, 0]]]])