平均数组到相同的固定长度

时间:2017-02-18 16:05:13

标签: python numpy

我有多个不同长度的数组,我希望将这些数据平均到可比较的数组,例如

array1 = np.array([1, 2, 3, 4, 5])
array2 = np.array([1, 2, 3, 4])
target_length = 3
def cast(array, target_length):
    ...

这应该cast(array1, target_length)为:

np.array([(1+2*0.66)/1.66, (2*0.33+3*1+4*0.33)/1.66, (4*0.66+5)/1.66 ])

因为:5/3 = 1.66。我们还将获得: cast(array1, target_length) as:

np.array([(1+2*0.33)/1.33, (2*0.66+3*0.66)/1.33, (3*0.33+4)/1.33])

因为:4/3 = 1.33。

数组永远不需要增长,因为可以使用良好的numpy解决方案。

是否有使用numpy库的解决方案?

1 个答案:

答案 0 :(得分:2)

问题可以通过几种不同的方式来阅读,但如果我做对了,你想要实现的是

def cast(array, target_length):
    target = np.zeros(target_length)
    for i in range(target_length*len(array)):
        target[i//len(array)] += array[i//target_length]/len(array)
    return target

如果这是您的目标,可以通过numpy操作获得

def cast(array, target_length):
    return np.mean(np.repeat(array, target_length).reshape(-1, len(array)), 1)