2017-06-08 4 views
-1

長さの異なる配列を含むリスト(Y)を持っています。リストには50個以上の要素が含まれています(テストのために5個だけでした)。リストの形は5です。以下に示すように、各要素の形状を印刷して出力がコメントであるリストの要素を追加する方法

print(Y.shape) #(5,) 
print(Y[0].shape) #(600, 2) 
print(Y[1].shape) #(250, 2) 
print(Y[2].shape) #(300, 2) 
print(Y[3].shape) #(200, 2) 
print(Y[4].shape) #(100, 2) 

リストの各要素は異なる長さ(600,250,300,200,100)を有しているが、すべてができている[0,1]または[0,1] dimension.I私は

を試してみました、これらの要素を追加し、

(1450,2)

として出力を取得したいです

Y=np.sum(Y, axis=0)

ValueError:オペランドを図形(600,2)(250,2)と共にブロードキャストできませんでした。これは(600,2)(600,2)または、2)(250,2)、600と250を追加したい。

同じ機能が[80,20,30]や[40,20,30]のような3次元配列で機能する[120,20,30]

これらの要素を追加/合計するにはどうすればよいですか?

+1

'はAttributeError: 'リスト' オブジェクトには属性「shape''を持っていません。だから私はYがリストだとは思わない。 –

答えて

1

使用np.concatenate

np.concatenate(Y, axis=0) 

例えば:

import numpy as np 

Y1 = np.ones((100, 2)) 
Y2 = np.ones((200, 2)) 
Y3 = np.ones((300, 2)) 

np.concatenate([Y1, Y2, Y3], axis=0).shape # (600, 2) 
+2

YがOPの主張である場合、あなたのリストの理解のポイントは何ですか[arr for Y]? –

+1

Y [0]とY [1]の形状が同じでないため、Yをnp.arrayにすることはできません。したがって、Yはおそらくリストであり、OPはlen(Y)の代わりにY.shapeを使用します。私はリストの理解は無関係で、少し誤解を招くと思います。 –

+0

はい、それはちょうど 'Y'でどちらの方法でも動作するはずです。だから私は私のコメントを削除し、私はすでに答えを更新しました。あなたのフィードバックをありがとう:) – MSeifert