2012年11月29日木曜日

複数リストの各要素の平均値

複数リストの対応する要素同士に対していっぺんに処理をしたい。
リストの内包表記を使ってみた。

listA = [1.0, 2.0, 3.0]
listB = [4.0, 5.0, 6.0]
# 各要素の平均を取る。
M = [(x+y)/2 for count_x,x in enumerate(listA) for count_y,y in enumerate(listB) if count_x==count_y]
# 各要素を掛け合わせた値
N = [x*y for count_x,x in enumerate(listA) for count_y,y in enumerate(listB) if count_x==count_y]

結果:
M = [2.5, 3.5, 4.5]
N = [4.0, 10.0, 18.0]
特に後者は、ベクトルの内積を取るような時に使えるのかな、と思ったり。

1 件のコメント:


  1. (1)
    M = map(lambda x, y: (x + y) / 2.0, listA, listB)

    (2)
    numpyのarrayを使う。平均は(listA+listB)/2、内積はdot(listA, listB)

    返信削除