如何使用numpy

时间:2019-12-06 15:14:40

标签: python python-3.x numpy

如何使用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] 

2 个答案:

答案 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. ]])