假设我有一个矩阵。我删除整行,在这样做之后,我想将删除的行追加到简化矩阵。我怎么能这样做?
import numpy as np
A=np.array([[1,2,3],[4,5,6],[7,8,9]])
A1=np.delete(A,1,0)
A2=A[1,:]
np.append(A1,A2,0)
但这显示错误。
有什么建议吗?
答案 0 :(得分:1)
执行np.delete
时,它返回没有已删除行的数组,而不是已删除的行。所以你的A1
实际上有两行而不是一行,这就是它失败的原因。
为了实现你想要的,这应该做到:
A1 = A[1]
A = np.delete(A, 1, 0)
result = np.append(A, A1[np.newaxis, :], 0)
此result
将包含:
array([[1, 2, 3],
[7, 8, 9],
[4, 5, 6]])
这是你想要的吗?
注意,使用np.newaxis
是必要的,以使单行数组A1具有与要追加的数组相同的形状(因为np.append
要求数组具有相同数量的维度)。
答案 1 :(得分:1)
怎么样:
def move_row_to_end(A, row):
return A[range(row) + range(row + 1, A.shape[0]) + [row]]
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print move_row_to_end(A, 1)
答案 2 :(得分:0)
您可以尝试使用vstack
:垂直(按行)顺序堆叠数组。
http://docs.scipy.org/doc/numpy/reference/generated/numpy.vstack.html
In [33]: np.vstack([A1, A2])
Out[33]:
array([[1, 2, 3],
[7, 8, 9],
[4, 5, 6]])