行列の和をとってみる
こんな感じの行列があって、すべてのキーワードの出現回数の合計を出したい。
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のすべての要素で、要素の要素の合計を要素として持つリストを作成する(分かりづらい表現やな)
最後に、↑で作成したリストの要素の和を算出する。