#python #numpy #swap #numpy-ndarray #notation
#python #numpy #подкачка #numpy-ndarray #обозначения
Вопрос:
Допустим, у нас есть массив numpy:
A = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12]])
Кто-нибудь может объяснить, почему эта строка используется для замены двух строк (в данном случае 1-й с 4-й)?
'A[[0, 3]] = A [[3, 0]]'
Комментарии:
1. Если вы сомневаетесь в самой нотации,
A[[3, 0]]
получаете доступ к 4-й и 0-й строкам и присваиваете 0-й и 4-й строкам2. numpy.org/doc/1.19/user/basics.indexing.html#index-arrays
3. Вы спрашиваете, почему кто-то будет использовать этот метод? Или почему это работает?
4. Я понимаю это. Я не понимал, как это работает, но знаю, что понимаю.
5. @GeorgePanailidis пожалуйста, примите мое решение в качестве ответа (нажав галочку рядом с ним), если вы концептуально понимаете это из моего ответа. Спасибо!
Ответ №1:
Вы обновляете позиции двух подмассивов одновременно.
Однако, выполняя:
A[0] = A[3]
A[3] = A[0]
не будет работать, потому что подмассив A[0]
уже обновлен, поэтому вам нужно сделать это одновременно с:
A[[0, 3]] = A [[3, 0]]
A
array([[10, 11, 12],
[ 4, 5, 6],
[ 7, 8, 9],
[ 1, 2, 3]])