我正在寻找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)
答案 0 :(得分:10)
您需要pairwise()
和map()
。
答案 1 :(得分:4)
最直接的方法是列表理解:
a = [l[i] + l[i+1] for i in range(len(l)-1)]
或者,您可以使用一点内置魔法:
map(sum, zip(l, l[1:]))
答案 2 :(得分:2)
使用numpy.diff()
查找NumPy数组的连续条目之间的差异:
>>> a = numpy.array([5, 2, 3, 1, 4])
>>> numpy.diff(a)
array([-3, 1, -2, 3])
这将比任何纯Python解决方案快得多。
编辑:以下是二维数组的示例:
>>> 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)