Python

[Python]2次元配列の要素の和を求める

2次元配列の要素の和を求めたくなった。
ただし、numpyが使えない環境で。

参考: numpyを使う場合

import numpy as np

# [0, 1]の100×100の配列 
twod_array = np.random.randint(0, 2, (100, 100))

result = twod_array.sum()

print(result)

2重ループ

あまりこんなことはしないと思うが……

import random

# [0, 1]の100×100の配列 
twod_array = [[random.randint(0, 1) for _ in range(100)] for _ in range(100)]

result = 0
for row in twod_array:
    for element in row:
        result += element

print(result)

sum関数

for文は残るけど。

import random

# [0, 1]の100×100の配列 
twod_array = [[random.randint(0, 1) for _ in range(100)] for _ in range(100)]

result = 0
for row in twod_array:
    result += sum(row)

print(result)

mapとsum関数

for文を使わずワンライナーでもかける。

import random

# [0, 1]の100×100の配列 
twod_array = [[random.randint(0, 1) for _ in range(100)] for _ in range(100)]

result = sum(map(sum, twod_array))

print(result)

結論

  • 実行速度は numpy < (sum+map) = (sum+for) < (for*2) みたいな感じだった。
  • numpyが使えるならnumpyを使おう。