Из документов :
numpy .where (условие [, x, y]) [...] Примечание: Когда предоставляется только условие, эта функция является сокращением для np.asarray (условие) .nonzero ()
Примечание верно для вашего случая, поэтому вам придется искать np.nonzero
, чтобы найти
numpy .nonzero [...] Возвращает кортеж массивов, по одному для каждого измерения, содержащий индексы ненулевые элементы в этом измерении.
пример:
import numpy as np
a = np.arange(10).reshape(2,5) # input: array with 2 dimensions
a
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
w = np.where(a < 5) # returns: 2-element tuple, one element per dimension
w
(array([0, 0, 0, 0, 0]), array([0, 1, 2, 3, 4]))
w[1]
array([0, 1, 2, 3, 4])
Это означает, что в вашем случае np.where
возвращает tuple
; np.where(current_state_row >= 0)[1]
выбирает результат для 2-го измерения.
Примечание: для n-мерных массивов, возвращаемое значение np.where
(предоставляется только condition
) ) будет иметь только n элементов. Если ваш входной массив, например, является 1-мерным, попытка выбрать второй элемент из возвращенного tuple
приведет к ошибке!