Пусть A, C и B - массивы с одинаковым количеством строк.
Я хочу обновить 0-й элемент A [0], 2-й элемент A [1] и т. Д. То есть обновить B [i] -й элемент A [i] до C [i]
import numpy as np
A = np.array([[1,2,3],[3,4,5],[5,6,7],[0,8,9],[3,7,5]])
B = np.array([0,2,1,2,0])
C = np.array([8,9,6,5,4])
for i in range(5):
A[i, B[i]] = C[i]
print ("FOR", A)
A = np.array([[1,2,3],[3,4,5],[5,6,7],[0,8,9],[3,7,5]])
A[:,B[:]] = C[:]
print ("Vectorized, A", A)
Выход:
FOR [[8 2 3]
[3 4 9]
[5 6 7]
[0 8 5]
[4 7 5]]
Vectorized, A [[4 6 5]
[4 6 5]
[4 6 5]
[4 6 5]
[4 6 5]]
Цикл for и векторизация дали разные результаты.
Я не уверен, как векторизовать это для цикла с помощью Numpy.