我有一个看起来像这样的矩阵
a = np.random.rand(2, 2, 2)
[[[1 0]
[1 1]]
[[1 1]
[1 0]]]
我想使用numpy在此矩阵中设置0到0的任何行。所以在这种情况下, 看起来像这样,
[[[0 0]
[1 1]]
[[1 1]
[0 0]]]
有人可以给我一个提示吗?
答案 0 :(得分:1)
与0
比较并在最后一个轴ANY
(或此特定axis=-1
案例中的第三轴axis=2
)中查找3D
匹配,然后使用这个mask
分配零 -
a[(a==0).any(axis=-1)] = 0
示例运行 -
In [16]: a
Out[16]:
array([[[1, 0],
[1, 1]],
[[1, 1],
[1, 0]]])
In [17]: a[(a==0).any(-1)] = 0
In [18]: a
Out[18]:
array([[[0, 0],
[1, 1]],
[[1, 1],
[0, 0]]])
答案 1 :(得分:0)
只是为了好玩,这是一个替代版本(使用零值):
>>> a
array([[[1, 0],
[1, 1]],
[[1, 1],
[0, 1]]])
>>> a.all(axis=-1,keepdims=True)*a
array([[[0, 0],
[1, 1]],
[[1, 1],
[0, 0]]])