2016-01-24 3 views
1

У меня есть матричная матрица формы m, n. Теперь, я хочу обменять первый столбец с последним, вторым столбцом со вторым последним, третьим столбцом с третьим последним и т. Д.обменные столбцы в матрице numpy

Есть ли способ «numpy» для этого?

Прямо сейчас, я перебираю половину num_cols и обмениваю столбцы.

+0

Насколько важна концепция «обмена»? Ответ с использованием ':: - 1' технически не обменивает ничего, он просто смотрит (возвращает) столбцы в обратном порядке. Это метод среза, который применяется как к спискам, так и к массивам. Для большинства целей это достаточно. – hpaulj

ответ

2

numpy slicing использования в обратном порядке столбца в массиве:

my_array = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) 
print(my_array[:, ::-1]) 

Выход

[[ 4 3 2 1] 
[ 8 7 6 5] 
[12 11 10 9] 
[16 15 14 13]] 

Типичный срез имеет вид start:stop:step. X-мерный срез, :, по умолчанию, выбирает все строк. Участок y-размерности, ::-1, выбирает все столбцы, но с размером шага -1, поэтому помещает их в обратном порядке, следовательно, поменяв порядок столбцов по желанию.