2017-11-23 2 views
-1

は私がarrayが、私は私の出力もnumpyのをされて使用して5配列内の要素に基づいてPythonの多次元配列から値を合計するにはどうすればよいですか?

になるように1から始まる各サブリストから全ての第2の要素を追加したい私の配列

my_array= [[1,2],[1,3],[2,3]]

と呼ばれていると言いますオプションではありません...

誰でもこれを行う方法を知っていますか?あなたは配列をループすることができますし、最初の要素が1であれば、その変数に2つ目の要素を追加チェック

答えて

5

あなたはこのために、条件付きリストの内包表記を使用することができます。

my_array=[[1,2],[1,3],[2,3]] 
my_sum=sum(v[1] for v in my_array if v[0]==1) 

print(my_sum) 

出力:

5 
1

result = 0 
for i in range(0, len(my_array)): 
    elem = my_array[i] 
    if elem[0] == 1: 
     result += elem[1] 
0
my_array= [[1,2],[1,3],[2,3]] 
sum = 0 
for x in my_array: 
    if x[0] == 1: 
     sum+=x[1] 

print(sum) 
3

それらを合計し、その後、項目を選択するためのフィルタでリスト内包を使用します。

result = sum([b for a,b in my_array if a == 1]) 
0

OPはnumpyのを使用することはできませんが、それはしていません将来の質問の読者にとって真実でなければならない。私たちはすでに非numpyソリューションをカバーしているので、ここではnumpyを使用しています。

>>> import numpy as np 
>>> my_array = np.array([[1,2],[1,3],[2,3]]) 
>>> 
>>> np.sum(my_array[:,1][my_array[:,0] == 1]) 
5 
0

大きいデータの場合は、最初からnumpyを使用する方が高速である可能性があります。 to_sumの対応する要素を追加する場合、to_selectはtrueです。

my_array = numpy.array(my_array) 
to select = my_array[:,0] == 1 
to_add = my_array[:,1] 
result = numpy.sum(to_add[to_select]) 
関連する問題