2

リスト内の各要素と次の要素 (または他のイテラブル) に関数を適用し、一連の結果を新しいリストに返す Python の組み込み関数を探しています。組み込まれているかどうかはわかりませんが、可能であれば機能的な方法でこれにアプローチしようとしています。

例:

l = [1,2,3,4,5]
# returns [3,5,7,9]
# add(1,2) add(2,3) add(3,4) add(4,5)

私の実際の使用例は、形式のベクトルのリストがあり、numpy.array([1,2,3])連続する各ベクトルの違いを見つけたいということです。

実際の例:

l = [numpy.array([1,2,3]), numpy.array([2,7,6]), numpy.array([4,5,6])]
# find the difference between each vector (l[0]-l[1], l[1]-[l2], .. etc)
4

3 に答える 3

10

あなたが欲しいpairwise()map()

于 2012-06-03T22:40:15.150 に答える
4

これを行う最も簡単な方法は、リスト内包表記です。

a = [l[i] + l[i+1] for i in range(len(l)-1)]

別の方法として、組み込みのマジックを使用することもできます。

map(sum, zip(l, l[1:]))
于 2012-06-03T22:43:12.680 に答える
2

NumPy 配列の連続するエントリ間の違いを見つけるには、次のようにしnumpy.diff()ます。

>>> a = numpy.array([5, 2, 3, 1, 4])
>>> numpy.diff(a)
array([-3,  1, -2,  3])

これは、純粋な Python ソリューションよりもはるかに高速です。

編集:これは2次元配列の例です:

>>> a = numpy.array([[1,2,3], [2,7,6], [4,5,6]])
>>> numpy.diff(a, axis=0)
array([[ 1,  5,  3],
       [ 2, -2,  0]], dtype=int32)
于 2012-06-03T22:40:44.780 に答える