Как установить всю строку в ноль, если элемент в моей строке также равен нулю? - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть матрица, которая выглядит так

a = np.random.rand(2, 2, 2)

[[[1 0]
  [1 1]]

 [[1  1]
  [1 0]]]

Я хочу установить любую строку в этой матрице, которая имеет 0 - 0, используя numpy. Так что в этом случае это будет выглядеть так,

[[[0 0]
  [1 1]]

 [[1  1]
  [0 0]]]

Может кто-нибудь дать мне подсказку?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Ради интереса, вот альтернативная версия (с нулевым значением):

>>> 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]]])
0 голосов
/ 28 апреля 2018

Сравните с 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]]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...