Обозначение замены строк в массиве numpy в Python

#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]])