Xip*_*ias 8 python arrays numpy iterable-unpacking
当我拥有a=1
和b=2
,我可以a,b=b,a
这样写,a
并b
互相交换.
我使用这个矩阵作为数组:
[ 1, 2, 0, -2]
[ 0, 0, 1, 2]
[ 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
交换numpy数组的列不起作用:
import numpy as np
x = np.array([[ 1, 2, 0, -2],
[ 0, 0, 1, 2],
[ 0, 0, 0, 0]])
x[:,1], x[:,2] = x[:,2], x[:,1]
Run Code Online (Sandbox Code Playgroud)
它产生:
[ 1, 0, 0, -2]
[ 0, 1, 1, 2]
[ 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
所以x[:,1]
简单地被覆盖而不是转移到x[:,2]
.
为什么会这样?
Ash*_*lla 10
如果您正在尝试交换列,则可以执行此操作
print x
x[:,[2,1]] = x[:,[1,2]]
print x
Run Code Online (Sandbox Code Playgroud)
产量
[[ 1 2 0 -2]
[ 0 0 1 2]
[ 0 0 0 0]]
[[ 1 0 2 -2]
[ 0 1 0 2]
[ 0 0 0 0]]
Run Code Online (Sandbox Code Playgroud)
你在问题中提到的交换方法似乎适用于单维数组和列表,
x = np.array([1,2,0,-2])
print x
x[2], x[1] = x[1], x[2]
print x
Run Code Online (Sandbox Code Playgroud)
产量
[ 1 2 0 -2]
[ 1 0 2 -2]
Run Code Online (Sandbox Code Playgroud)