我需要定义一个读取numpy数组的函数,并在数组中产生k个最近点到数字p的平均值。
示例:
bundle show rspec-rails
使用上述数字,我需要找到最接近p的k个点的平均值,p可以在数组中明确说明,也可以不是。
我现在很新,很困惑,觉得我已经耗尽了我的资源。我觉得之前已经问过这个问题,但答案对于我的需要来说太复杂了。
提前致谢。
答案 0 :(得分:0)
给定(1d)数组arr
和标量输入p
,这里是你如何找到n
最近值的平均值:
def neighbor_mean(arr, p, n=3):
idx = np.abs(arr - p).argsort()[:n]
return arr[idx].mean()
arr = np.array([1, 2, 3, 4, 5, 6, 7, 50, 24, 32, 9, 11, 12, 10])
neighbor_mean(arr, p=15)
# 11.0
在上文中,首先你采取绝对差异:
np.abs(arr - 15)
# array([14, 13, 12, 11, 10, 9, 8, 35, 9, 17, 6, 4, 3, 5])
然后argsort()
返回将对数组进行排序的索引。我们对n
- 最小的绝对差异感兴趣。这就是你真正想要的,而不是直接对差异进行排序。
np.abs(arr - p).argsort()[:3]
# array([12, 11, 13])
最后,您想要对输入数组arr
建立索引,并取其平均值:
arr[[12, 11, 13]]
# array([12, 11, 10]) # mean: 11.0