#arrays #python-3.x #numpy
#массивы #python-3.x #numpy
Вопрос:
Я работаю над определенной задачей, которая использует numpy. У меня есть следующий массив:
A = array([[1, 2], [3, 4], [5, 6], [7, 8]])
И у меня есть еще одна переменная с именем B, которая имеет форму (10, 10).
То, что я хочу сделать, это в основном перебирать массив A и выполнять следующее:
B[1,2]
B[3,4]
B[5,6]
B[7,8]
Все они должны возвращать одно число, а не массив numpy.
Я попытался преобразовать массив A в list, а затем выполнить цикл по списку, чтобы взять 2 последовательных элемента. Но мне было интересно, есть ли лучший метод для достижения этой цели.
Спасибо.
Ответ №1:
Вам не нужен цикл
Настройка примера
A = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
B = np.arange(100).reshape(10,10)
B
Выход:
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[20 21 22 23 24 25 26 27 28 29]
[30 31 32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47 48 49]
[50 51 52 53 54 55 56 57 58 59]
[60 61 62 63 64 65 66 67 68 69]
[70 71 72 73 74 75 76 77 78 79]
[80 81 82 83 84 85 86 87 88 89]
[90 91 92 93 94 95 96 97 98 99]]
Вы можете индексировать с помощью A
B[A[:,0], A[:,1]]
Выход:
array([12, 34, 56, 78])
Комментарии:
1. Да, спасибо! Это то, что я искал. Индексация Numpy доставляет мне каждый раз.
Ответ №2:
Вы пробовали что-то подобное:
for i in range(len(A)):
print(B[A[i][0], A[i][1]])
Комментарии:
1. Да, это работает, я хотел на самом деле проверить результат без использования цикла for (следующий ответ). Спасибо за вашу помощь.