附加矩阵

时间:2014-02-18 12:38:16

标签: python numpy matrix

假设我有一个矩阵。我删除整行,在这样做之后,我想将删除的行追加到简化矩阵。我怎么能这样做?

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)

但这显示错误。

有什么建议吗?

3 个答案:

答案 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]])