где вычислить индекс возрастной группы - PullRequest
0 голосов
/ 04 мая 2020

Есть часть следующего кода, которую я не совсем понимаю.

Вот код:

import numpy as np

medalNames = np.array(['none', 'bronze', 'silver', 'gold'])

ageGroupCategories = np.array(['B','P','G','T'])

allLowerThresholds = np.array([[-1,0,5,10], [0,5,10,15], [0,11,14,17], [0,15,17,19]])

ageGroupIndex = np.where(ageGroup[0] == ageGroupCategories)[0][0]

В последней строке, что означает [0][0] делать, почему код не работает без него?

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Несколько вещей:

  1. Использование полей встроенного кода
  2. Ваш код вообще не работает, поскольку переменная ageGroup не существует

Теперь к вашему вопросу:

, так как это массив, [0][0] вызывает первую строку и первый столбец результата массива np.where().

0 голосов
/ 04 мая 2020

Ваш вопрос является общим и связан с функцией numpy.where.

Давайте рассмотрим пример simple :

A=np.array([[3,2,1],[4,5,1]])
# array([[3, 2, 1],
#        [4, 5, 1]])

print(np.where(A==1))
# (array([0, 1]), array([2, 2]))

Как видите, функция np.where возвращает кортеж. Первый элемент (это массив numpy) кортежа - это индекс строки / строки, а второй элемент (это снова массив numpy) - это индекс столбца.

np.where(A==1)[0] # this is the first element of the tuple thus, 
                  # the numpy array containing all the row/line 
                  # indices where the value is = 1.
#array([0, 1])

Выше указано, что в первой (0) и второй (1) строке матрицы есть значение = 1 A.

Далее:

np.where(A==1)[0][0]
0

возвращает индекс первой строки , содержащей значение = 1. 0 - это первая строка матрицы A

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...