如何使用numpy对每两个连续向量求和。或每两个连续向量的平均值。 列表列表(向量数量可以偶数或不均匀)。 例如:
[[2,2], [1,2], [1,1], [2,2]] --> [[3,4], [3,3]]
也许是这样,但是使用了numpy,并且实际上在矢量数组而不是整数数组上起作用。或者,如果存在的话,也许是某种数组理解。
def pairwiseSum(lst, n):
sum = 0;
for i in range(len(lst)-1):
# adding the alternate numbers
sum = lst[i] + lst[i + 1]
答案 0 :(得分:2)
while
可以用 def mean_consecutive_vectors(lst, step):
idx_list = list(range(step, len(lst), step))
new_lst = np.split(lst, idx_list)
return np.mean(new_lst, axis=1)
来代替np.sum()
。
答案 1 :(得分:1)
您可以将数组重整为对,这将允许您通过提供正确的轴直接使用np.sum()
或np.mean()
:
import numpy as np
a = np.array([[2,2], [1,2], [1,1], [2,2]])
np.sum(a.reshape(-1, 2, 2), axis=1)
# array([[3, 4],
# [3, 3]])
编辑以发表评论:
要获取每个相邻对的均值,可以添加原始数组的切片并按2进行广播除法。
> a = np.array([[2,2], [1,2], [1,1], [2,2], [11, 10], [20, 30]])
> (a[:-1] + a[1:])/2
array([[ 1.5, 2. ],
[ 1. , 1.5],
[ 1.5, 1.5],
[ 6.5, 6. ],
[15.5, 20. ]])