我有多个不同长度的数组,我希望将这些数据平均到可比较的数组,例如
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
库的解决方案?
答案 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)