行列の和をとってみる

こんな感じの行列があって、すべてのキーワードの出現回数の合計を出したい。

paragraph_id keyword1 keyword2 keyword3 keyword4
0 5 3 1 4
1 2 4 4 4
2 3 2 5 3

計算したい要素のみのリストを作っておく

matrix = [
           [5,3,1,4],
           [2,3,3,3],
           [3,2,5,3]
         ]

すぐ思いつくのはforで回す方法だけど、sum関数とmap関数とリスト内包表記で実現してみた。

sum([sum(map(int,row)) for row in matrix])

ファイルから読み込むときに、文字列で解釈される場合は↑のようにint関数でキャストする。
初めから整数のリストを持ってる時は、↓の方法でいけると思う。

sum([sum(row) for row in matrix])

まず内側のmap(int,row) (rowはmatrixの要素)で、rowの要素を整数型に変換し、整数の要素を持つリストを作成する。
sum(map(int,row)) は作成されたリストの要素の合計を算出する。
[sum(map(int,row)) for row in matrix] でmatrixのすべての要素で、要素の要素の合計を要素として持つリストを作成する(分かりづらい表現やな)
最後に、↑で作成したリストの要素の和を算出する。