如何向数组添加其他行和列?

时间:2010-01-04 21:37:46

标签: python

我需要在我可以定义的位置向现有的numpy数组添加一列和一行。 原谅我的常规英语。

3 个答案:

答案 0 :(得分:19)

我假设您的列和行只是一个列表列表?

也就是说,您有以下内容?

L = [[1,2,3],
     [4,5,6]]

要添加另一行,请使用列表的追加方法。

L.append([7,8,9])

L = [[1,2,3],
     [4,5,6],
     [7,8,9]]

要添加另一列,您必须遍历每一行。一个简单的方法是使用列表理解。

L = [x + [0] for x in L]

L = [[1,2,3,0],
     [4,5,6,0]]

答案 1 :(得分:6)

有很多方法可以在numpy中执行此操作,但并非所有方法都允许您在任何位置将行/列添加到目标数组(例如,append只允许在最后一行之后添加/柱)。如果您希望单个方法/函数在目标数组中的任何位置附加行或列,我将使用“插入”:

T = NP.random.randint(0, 10, 20).reshape(5, 4)
c = NP.random.randint(0, 10, 5)
r = NP.random.randint(0, 10, 4)
# add a column to T, at the front:
NP.insert(T, 0, c, axis=1)
# add a column to T, at the end:
NP.insert(T, 4, c, axis=1)
# add a row to T between the first two rows:
NP.insert(T, 2, r, axis=0)

答案 2 :(得分:1)

我建议使用 sympy Matrix 对象来做:

a = [[ 2,   1,  180],
     [ 1,   3,  300],
     [-1,  -4,    0]]

b = [[1,0],
     [0,0],
     [0,1]]
import sympy as sp

a = sp.Matrix(a).col_insert(-2, sp.Matrix(b))
a.tolist()

输出:

[[2, 1, 0, 1, 180], 
 [1, 0, 0, 3, 300], 
 [-1, 0, 1, -4, 0]]

要继续使用 Numpy 数组,您可以使用 np.asarray(a) 代替 a.tolist()(假设您已将 Numpy 导入为 np