2017-10-01 11 views
1

は私がそれは最初の二乗の和を表すよう

2 3 
1 2 
3 9 
. 
. 

が、私はそれに別の列を追加する必要があるフォームの2-Dのnumpyの行列を持って起こる大きなnumpyの行列に列を追加する方法

2 3 13 
1 2 5 
3 9 36 
. 
. 

この3番目の列を追加するにはnumpy関数を使用しますか?私の行列は、多数の行を持っていると私は、元の配列とそれをバインドするnumpy.column_stackを使用した後、まず、正方形の合計を計算ループ

答えて

2

のために使用しなくても、それをしたい:

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]]) 
2
In [273]: x=np.array([[2,3],[1,2],[3,9]]) 
In [274]: x**2 
Out[274]: 
array([[ 4, 9], 
     [ 1, 4], 
     [ 9, 81]], dtype=int32) 

012:2D形状

In [275]: (x**2).sum(axis=1, keepdims=True) 
Out[275]: 
array([[13], 
     [ 5], 
     [90]], dtype=int32) 

そしてまっすぐCONCATENATEが可能に保持しながら

keepdims和を行います

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

reshapehstackcolumn_stackものと同じ種類の、CONCATENATEの列配列を作成するだけで、様々な方法を実行します。

+0

真実ですが、私が鉱山を公表したとき、他の答えは見えませんでした。それは助けることができないと思う、それらの数秒は2票と投票なしの違いになることができます。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅ、私は答えの共通点を指摘していましたが、優先度や票の意味はありません。 – hpaulj

+0

ああ、大丈夫です。私はあなたの声明にあまりにも多くを読んだかもしれません。それが起こるとちょっと粉砕です.2つの答えの間に差異がありますが、1つだけが認識されます。とにかく、私はあなたを賞賛しました。 –

0

単純なことに、第1列と第2列をスライスして、2乗の合計を求め、元のnumpy行列に連結します。

ただ1行です。

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

他の回答も1行に減らすことができますが、必要はありません。あなたの答えは、それが複数の列に一般化することができないので、それはより悪くなります。 –

+0

もちろん、彼が言ったように一般化されています。あなたが言っているかもしれない行を追加することでそれを試すことができます。 –

関連する問題