[英]Python 2.7 appending column to 2d array
我有2个数组,x和y:
x = [[ 1. 2. 3. 4.]
[ 5. 6. 7. 8.]
[ 9. 0. 3. 6.]]
y = [[ 1. 0. 0.]
[ 0. 1. 0.]
[ 0. 0. 1.]]
我想要一个z矩阵,例如:z = [y [0],x,y [1],y [2]]:
[[ 1. 1. 2. 3. 4. 0. 0.]
[ 0. 5. 6. 7. 8. 1. 0.]
[ 0. 9. 0. 3. 6. 0. 1.]]
所以我做了这段代码:
z = np.c_[y[0], x]
for j in range(n):
z = np.c_[x, y[j]]
但这并没有保存矩阵。 我得到的z只是最后一个操作:
[[ 1. 2. 3. 4. 0.]
[ 5. 6. 7. 8. 0.]
[ 9. 0. 3. 6. 1.]]
如何保存在矩阵上所做的更改? 我也尝试以同样的方式numpy.append(),但它给出了一条错误消息:
ValueError: all the input arrays must have same number of dimensions
使用np.c堆叠y和x。的列
np.c_[np.array(y)[0],np.asanyarray(x),np.array(y)[1],np.array(y)[2]]
Out[536]:
array([[1, 1, 2, ..., 4, 0, 0],
[0, 5, 6, ..., 8, 1, 0],
[0, 9, 0, ..., 6, 0, 1]])
或者,您可以使用np.roll在堆叠之前移动列,然后再移动一次。
np.roll(np.c_[np.array(x),np.roll(np.array(y),-1,axis=1)],1,axis=1)
Out[549]:
array([[1, 1, 2, ..., 4, 0, 0],
[0, 5, 6, ..., 8, 1, 0],
[0, 9, 0, ..., 6, 0, 1]])
我认为您正在寻找的命令是numpy.insert(a, pos, col, axis = 1)
。 如果使z = insert(y, 1, x, axis = 1)
,它将在y上插入一个新列,其中包含x中的值,并将输出保存在z中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.