我有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
答案 0 :(得分:1)
使用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]])
答案 1 :(得分:1)
我认为您要查找的命令是numpy.insert(a, pos, col, axis = 1)
。如果你创建z = insert(y, 1, x, axis = 1)
,它将在y上插入一个新列,其中包含x的值,并将输出保存在z中。