这里有两个问题。首先是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基本切片 http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#basic-slicing不创建实际数据的副本,而是创建相同数据的视图。要使此工作正常进行,您必须显式复制
temp = numpy.copy(my_array[:, 0])
my_array[:, 0] = my_array[:, 1]
my_array[:, 1] = temp
or use 高级切片 http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#advanced-indexing
my_array[:, [0, 1]] = my_array[:, [1, 0]]