import numpy as np
a = np.array([[1,1,1],[2,2,2],[3,3,3], [4,4,4]])
tmp = a[1]
a[1] = a[2]
a[2] = tmp
tmp只是a[1]的另一个名字,它并不是将a[1]复制了之后,就与a[1]无关,或许可理解为一种引用。所以这段代码的效果并不能如愿互换原始a数组的第2行和第三行,而是会将2,3行都变成原来的第三行[3,3,3],像这样:
array([[1, 1, 1],
[3, 3, 3],
[3, 3, 3],
[4, 4, 4]])
那么如果想互换两行,应该怎么操作呢?
有两种方法,第一种很简便:
a[[1,2], :] = a[[2,1], :]
这样就将数组a的第2行和第3行互换了。或者,写得更易理解一点,也可以这样一步一步写:
tmp = np.copy(a[1])
a[1] = a[2]
a[2] = tmp
这两种写法都可以将数组a的第2,3行互换,即可以得到:
array([[1, 1, 1],
[3, 3, 3],
[2, 2, 2],
[4, 4, 4]])