繁体   English   中英

Python 2.7将列附加到2d数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM