Здесь есть две проблемы.Первое состоит в том, что data
, который вы передаете своей функции, по-видимому, не является двумерным массивом NumPy - по крайней мере, это то, о чем говорится в сообщении об ошибке.делайте то, что ожидаете:
my_array = numpy.arange(9).reshape(3, 3)
# array([[0, 1, 2],
# [3, 4, 5],
# [6, 7, 8]])
temp = my_array[:, 0]
my_array[:, 0] = my_array[:, 1]
my_array[:, 1] = temp
# array([[1, 1, 2],
# [4, 4, 5],
# [7, 7, 8]])
Проблема в том, что Numpy basic slicing не создает копии фактических данных, а скорее просматривает те же данные.Чтобы сделать это, вам нужно либо явно скопировать
temp = numpy.copy(my_array[:, 0])
my_array[:, 0] = my_array[:, 1]
my_array[:, 1] = temp
, либо использовать расширенную нарезку
my_array[:,[0, 1]] = my_array[:,[1, 0]]