numpy.where
возвращает кортеж, поскольку каждый элемент кортежа ссылается на измерение.
Рассмотрим этот пример в двух измерениях:
a = np.array([[1, 2, 3, 4, 5, 6],
[-2, 1, 2, 3, 4, 5]])
print(np.where(a > 2))
(array([0, 0, 0, 0, 1, 1, 1], dtype=int64),
array([2, 3, 4, 5, 3, 4, 5], dtype=int64))
Как видите, первый элементкортеж относится к первому измерению соответствующих элементов;второй элемент относится ко второму измерению.
Это соглашение numpy
часто используется.Вы также увидите это, когда спросите форму массива, т.е. форма одномерного массива вернет кортеж с 1 элементом:
a = np.array([[1, 2, 3, 4, 5, 6],
[-2, 1, 2, 3, 4, 5]])
print(a.shape, a.ndim) # (2, 6) 2
b = np.array([1, 2, 3, 4, 5, 6])
print(b.shape, b.ndim) # (6,) 1