Spec-Zone.ru › NumPy 1.12

numpy.ma.MaskedArray.nonzero

MaskedArray.nonzero() [source]

Возвращает индексы элементов, не равных нулю и не замаскированных.

Возвращает кортеж массивов, по одному для каждой размерности, содержащий индексы ненулевых элементов в этой размерности. Соответствующие ненулевые значения можно получить с помощью:

a[a.nonzero()]

Чтобы сгруппировать индексы по элементу, а не по размерности, используйте:

np.transpose(a.nonzero())

Результат всегда является двумерным массивом с строкой для каждого ненулевого элемента.

Параметры:

None

Возвращает:

tuple_of_arrays : кортеж

Индексы ненулевых элементов.

См. также

numpy.nonzero
Функция, работающая с nd-массивами.
flatnonzero
Возвращает индексы, отличные от нуля, в сплющенной версии входного массива.
ndarray.nonzero
Эквивалентный метод ndarray.
count_nonzero
Подсчитывает количество ненулевых элементов в входном массиве.

Примеры

>>> import numpy.ma as ma
>>> x = ma.array(np.eye(3))
>>> x
masked_array(data =
 [[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]],
      mask =
 False,
      fill_value=1e+20)
>>> x.nonzero()
(array([0, 1, 2]), array([0, 1, 2]))

Замаскированные элементы игнорируются.

>>> x[1, 1] = ma.masked
>>> x
masked_array(data =
 [[1.0 0.0 0.0]
 [0.0 -- 0.0]
 [0.0 0.0 1.0]],
      mask =
 [[False False False]
 [False  True False]
 [False False False]],
      fill_value=1e+20)
>>> x.nonzero()
(array([0, 2]), array([0, 2]))

Индексы также можно сгруппировать по элементу.

>>> np.transpose(x.nonzero())
array([[0, 0],
       [2, 2]])

Распространенное применение nonzero — поиск индексов массива, где условие истинно. Учитывая массив a, условие a > 3 является булевым массивом, и так как False интерпретируется как 0, ma.nonzero(a > 3) возвращает индексы a , где условие истинно.

>>> a = ma.array([[1,2,3],[4,5,6],[7,8,9]])
>>> a > 3
masked_array(data =
 [[False False False]
 [ True  True  True]
 [ True  True  True]],
      mask =
 False,
      fill_value=999999)
>>> ma.nonzero(a > 3)
(array([1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2]))

Также можно вызвать метод nonzero массива-условия.

>>> (a > 3).nonzero()
(array([1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2]))

© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.ma.MaskedArray.nonzero.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API