#python #arrays #numpy #vector #indexin&
#python #массивы #numpy #вектор #индексирование
Вопрос:
A = np.zeros(shape = (3,4))
A = [[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]
B = np.asarray[[2],[0],[3]]
Существует ли простой способ изменить значение компонентов a в A (например, на 1) без цикла for, учитывая индекс в B
Такое, что:
A = [[0 0 1 0]
[1 0 0 0]
[0 0 0 1]]
Я смог получить этот вывод с помощью цикла for, но предпочел бы, чтобы это было не так, для масштабируемости в массивах с большей размерностью.
Ответ №1:
Взгляните на расширенную индексацию в numpy.
Вы можете сделать
A[[0, 1, 2], [2, 0, 3]] = 1
Мы индексируем для извлечения 3 местоположений и установки значения, таким образом, каждый список, используемый для индексации, имеет длину 3. И A
имеет 2 параметра dimm, поэтому мы используем два списка (вы также можете использовать только один список, если хотите получить полные строки).
Это также работает с массивами
A[np.aran&e(A.shape[0]), [2, 0, 3]] = 1