为了简化起见,我有一组数字:
import numpy as np
A = np.array([0, 1, 2, 3, 4, 5, ...])
我要:
((0+1)/2 + (2+1)/2)/2 , ((1+2)/2 + (3+2)/2)/2, ....
我不确定该怎么做。到目前为止,我得到了:
B = (A[1:]+A[:-1])/2.0
我希望得到:
B = [1, 2, 3, 4, 5 ...]
任何帮助都会很棒。谢谢。
答案 0 :(得分:1)
>> import numpy as np
>> def pair_avg(a):
>> return (a[1:]+a[:-1])/2.0
>>
>> a = np.arange(10)
>> pair_avg(pair_avg(a))
array([1., 2., 3., 4., 5., 6., 7., 8.])
pair_avg对a中的每对进行平均。 据我了解,您想执行两次。我认为您应该将此操作视为相同功能的递归应用程序。如果您总是要递归两次,则可以
>> def oper(a):
>> b = (a[1:]+a[:-1])/2.0
>> return (b[1:]+b[:-1])/2.0
>>
>> oper(a)
array([1., 2., 3., 4., 5., 6., 7., 8.])
当然,这等效于原始数组元素的一些加权和。 pair_avg
的每个第二个应用程序将原始数组应用于整数时,只会截断原始数组的两个以上端点值。