Python 如何向大numpy矩阵添加列

Python 如何向大numpy矩阵添加列,python,arrays,numpy,matrix,scipy,Python,Arrays,Numpy,Matrix,Scipy,我碰巧有一个2dNumPy数组,其形式如下: 2 3 1 2 3 9 . . . 我需要向它添加另一列,以便它表示前两列的平方和,如下所示: 2 3 13 1 2 5 3 9 36 . . . 我应该使用什么NumPy函数来添加第三列?我的数组有大量的行,我希望在不使用for循环的情况下执行此操作。首先计算平方和,然后使用numpy.column\u stack将其与原始数组绑定: a = np.array([[2,3], [1,2], [3,9]]) np.column_stack(

我碰巧有一个
2d
NumPy
数组,其形式如下:

2 3
1 2
3 9 
.
.
.
我需要向它添加另一列,以便它表示前两列的
平方和
,如下所示:

2 3 13
1 2 5
3 9 36
. 
.
.

我应该使用什么
NumPy
函数来添加第三列?我的数组有大量的行,我希望在不使用
for
循环的情况下执行此操作。

首先计算平方和,然后使用
numpy.column\u stack
将其与原始数组绑定:

a = np.array([[2,3], [1,2], [3,9]])

np.column_stack((a, np.sum(np.power(a, 2), axis=1)))
#array([[ 2,  3, 13],
#       [ 1,  2,  5],
#       [ 3,  9, 90]])
keepdims
在保留二维形状的同时执行求和

In [275]: (x**2).sum(axis=1, keepdims=True)
Out[275]: 
array([[13],
       [ 5],
       [90]], dtype=int32)
然后可以进行直接连接:

In [276]: np.concatenate((x,_),axis=1)
Out[276]: 
array([[ 2,  3, 13],
       [ 1,  2,  5],
       [ 3,  9, 90]])

重塑
hstack
列堆栈
做同样的事情,只是创建列数组以进行串联的不同方法。

很简单,将第一列和第二列切片,找到平方和,并连接到其原始numpy矩阵

就一行

       np.concatenate((x,np.array([x[:,0]**2 + x[:,-1]**2]).T),axis=1)

是的,但是当我发布我的答案时,我没有看到其他答案。我猜这也没什么帮助,这几秒钟可能是两票和无票的差距。@cᴏʟᴅsᴘᴇᴇᴅ, 我只是指出了我们答案的共性,没有涉及优先权或投票权。啊,好吧。我可能对你的陈述读得太多了。当这种情况发生时,有点令人沮丧——两个答案之间没有什么区别,但只有一个被认可。不管怎样,我投了你一票,祝你好运。其他答案也可以简化为一行,但没有必要。你的答案不是更好,如果有的话,是更糟,因为它不能推广到多个列。当然,它是推广的,就像他所说的那样。你可以通过添加更多的行来尝试,这可能就是你所说的。
       np.concatenate((x,np.array([x[:,0]**2 + x[:,-1]**2]).T),axis=1)