我需要在我可以定义的位置向现有的numpy数组添加一列和一行。 原谅我的常规英语。
答案 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
)