Numpy: як отримати індекси, значення яких є істинним


Ви можете використовувати такі методи, щоб отримати індекси, для яких умова виконується в NumPy:

Спосіб 1. Отримайте індекси, де умова виконується в масиві NumPy

 #get indices of values greater than 10
n.p. asarray (my_array> 10 ). nonzero ()

Спосіб 2. Отримайте індекси, де умова виконується в матриці NumPy

 #get indices of values greater than 10
n.p. transpose ((my_matrix>10) .nonzero ())

Спосіб 3. Отримайте індекси, де умова виконується в будь-якому рядку матриці NumPy

 #get indices of rows where any value is greater than 10
n.p. asarray ( np.any (my_matrix> 10 ,axis= 1 )). nonzero ()

Наступні приклади показують, як використовувати кожен метод на практиці.

Приклад 1: отримати індекси, де умова виконується в масиві NumPy

Наступний код показує, як отримати всі індекси масиву NumPy, значення якого перевищує 10:

 import numpy as np

#create NumPy array
my_array = np. array ([2, 2, 4, 5, 7, 9, 11, 12, 3, 19])

#get index of values greater than 10
n.p. asarray (my_array> 10 ). nonzero ()

(array([6, 7, 9], dtype=int32),)

З результату ми бачимо, що значення в індексних позиціях 6 , 7 і 9 вихідного масиву NumPy мають значення більше 10.

Приклад 2: отримати індекси, де умова виконується в матриці NumPy

Наступний код показує, як отримати всі індекси матриці NumPy, значення яких перевищує 10:

 import numpy as np

#create NumPy matrix
my_matrix = np. array ([[2, 5, 9, 12],
                     [6, 7, 8, 8],
                     [2, 5, 7, 8],
                     [4, 1, 15, 11]])

#get index of values greater than 10
n.p. transpose ((my_matrix> 10 ) .nonzero ())

array([[0, 3],
       [3, 2],
       [3, 3]], dtype=int32)

З результату ми бачимо, що значення в наступних позиціях індексів матриці мають значення більше 10:

  • [0, 3]
  • [3, 2]
  • [3, 3]

Приклад 3: отримати індекси, де умова виконується в будь-якому рядку матриці NumPy

Наступний код показує, як отримати всі індекси рядків у матриці NumPy, де значення більше 10 у будь-якому елементі рядка:

 import numpy as np

#create NumPy matrix
my_matrix = np. array ([[2, 5, 9, 12],
                     [6, 7, 8, 8],
                     [2, 5, 7, 8],
                     [4, 1, 15, 11]])

#get index of rows where any value is greater than 10
n.p. asarray ( np.any (my_matrix> 10 , axis= 1 )). nonzero ()

(array([0, 3], dtype=int32),)

З результату ми бачимо, що рядки 0 і 3 мають принаймні одне значення більше 10.

Примітка : щоб отримати індекси, де умова виконується в стовпці, замість цього використовуйте axis=0 .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в NumPy:

Як заповнити масив NumPy значеннями
Як видалити певні елементи з масиву NumPy
Як замінити елементи в масиві NumPy
Як отримати певний рядок із масиву NumPy

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *