2016-06-17 2 views
1

У меня есть Numpy массив «A» размером 571x24 и я пытаюсь найти индекс нулей, так что я:NumPy, где операция по 2D массива

>>>A.shape 
(571L, 24L) 

import numpy as np 
z1 = np.where(A==0) 

z1 является кортеж со следующим размером :

>>> len(z1) 
2 
>>> len(z1[0]) 
29 
>>> len(z1[1]) 
29 

Я надеялся создать z1 такого же размера, как и A. Как мне это достичь?

Edit: Я хочу создать массив z1 булевых на предмет наличия нуля в А, что:

>>>z1.shape 
    (571L, 24L) 
+0

"Я надеялся создать z1 такого же размера, как А." - что вы ожидаете от значения 'z1'? Кажется, вы ищете представление данных, отличное от того, что предоставляет «np.where». Какое представление данных вы ищете? – user2357112

+0

Если я правильно понимаю это, вы хотите найти индексы, в которых нули происходят в массиве? –

+2

разве это не просто 'z1 = A == 0'? –

ответ

1

Вы можете просто проверить с помощью оператора равенства в питона с NumPy. Пример:

>>> A = np.array([[0,2,2,1],[2,0,0,3]]) 
>>> A == 0 
array([[ True, False, False, False], 
     [False, True, True, False]], dtype=bool) 

np.where() делает что-то еще, см documentation. Хотя, это можно сделать с помощью np.where(), используя широковещательную передачу. См. Документацию.

>>> np.where(A == 0, True, False) 
array([[ True, False, False, False], 
     [False, True, True, False]], dtype=bool) 
1

Попробуйте это:

import numpy as np 
myarray = np.array([[0,3,4,5],[9,4,0,4],[1,2,3,4]]) 
ix = np.in1d(myarray.ravel(), 0).reshape(myarray.shape) 

Выход IX:

array([[ True, False, False, False], 
     [False, False, True, False], 
     [False, False, False, False]], dtype=bool) 
Смежные вопросы