イントロダクション
この記事では、Pythonのsum()メソッドについて説明します。
Python の sum() メソッドは、渡されたイテラブルの全要素の和を返す組み込みメソッドです。
Python の sum() 関数
Pythonのsum()メソッドを使用するための構文を見てみましょう。
sum(iterable[, start])
|
ここで
- iterableは、合計を計算する必要がある値を含む、任意の反復可能なオブジェクトにすることができます。リスト、タプル、辞書のいずれでもかまいません。
- start は加算の対象となる初期値です。デフォルトでは、開始値は0に設定されています。
では、このメソッドの使い方と動作を明確に理解するために、いくつかの例を見てみましょう。
sum() をリスト、タプル、複素数、浮動小数点数などに使う。
先に述べたように、sum() メソッドはリスト、タプル、辞書の形で渡された値、つまり任意のイテラブルの値の合計を計算することができます。
ただし、イテラブルに何らかの値が含まれていることが条件となり、そうでない場合はエラーが発生します。
ここでは、整数のリスト、タプル、辞書、複素数のリストの要素の和を求めることで、このメソッドに慣れましょう。
#using built-in sum() in Pythonlist1=[1,2,3,4,5]
tuple1=(10,20,30)
dict1={ 0:11, 1:22, 2:33, 3:44 }
complx_nums=[ 4+3j, 7+5j, 8+3j]
print("sum of list elements:",sum(list1,5))
print("sum of tuple elements:", sum(tuple1))
print("sum of dictionary keys:", sum(dict1))
print("sum of complex numbers:", sum(complx_nums))
|
結果を出力すると、以下の様になります。
sum of list elements: 20
sum of tuple elements: 60
sum of dictionary keys: 6
sum of complex numbers: (19+11j)
|
ここで
- まず、list1, tuple1, dict1, compx_num を初期化します。
- 次に、これらのイテラブルを個別に
sum()メソッドに渡します。 - list1の要素の合計を計算するために、開始値を5に設定し、残りの要素には開始パラメータを渡さない(デフォルトで0に設定)。
したがって、希望する出力が得られます。
すべてのケースで、それぞれのイテレート可能な要素の合計が得られます。
Python sum() vs NumPy sum()
PythonのNumPyモジュールには、sum()メソッドが定義されています。
これは、NumPyの配列要素の合計を求めるために使用されます。
しかし、このメソッドは、いくつかの値を含むPythonの他のイテラブルの要素の合計を求めることもできます。
それでは、Pythonの sum() と numpy.sum() の出力を、いくつかのイテラブルオブジェクトで比較してみましょう。
#numpy sum() vs python sum()import numpy as np
list1=[1,2,3,4,5]
np_arr = np.array([1,2,3,4,5])
print("Built-in sum() result:",sum(list1))
print("numpy sum() for np array:",np.sum(np_arr))
print("numpy sum() for list:",np.sum(list1))
|
結果は以下の通りです。
Built-in sum() result: 15
numpy sum() for np array: 15
numpy sum() for list: 15
|
見ての通り、リスト list1 に対して sum() と np.sum() の両メソッドは同じ結果を返します。
リスト、タプル、辞書などの反復可能なオブジェクトの和を計算する場合は、numpyの sum()メソッドよりも組み込みの sum()メソッドの方がはるかに高速で使い勝手が良いです。
しかし、numpyの配列に関しては、 np.sum() メソッドの方が高速で信頼性が高いように見えます。
これは、単にNumPyがベクトル化されたアプローチを用いているからです。
まとめ
この記事では、Python の組み込みの sum() メソッドについて、また Python の sum() と numpy.sum() メソッドの比較について学びました。
これで、このメソッドについて明確に理解していただけたと思います。
さらに質問がある場合は、以下までお気軽にお問い合わせください。