函数读取 np.array - 生成 k nn 到 np.array 中的数字 p 的平均值
Function reads np.array - produces the mean for k nn to number p in np.array
我需要定义一个函数,该函数读取一个 numpy 数组并生成与数组中数字 p 最接近的 k 个点的平均值。
示例:
array= np.array([1, 2, 3, 4, 5, 6, 7, 50, 24, 32, 9, 11, 12, 10])
p= 15 (**Note this is not a number in the array, I will need to find the
number closest to p or p number itself)
k = 3
In this case, I would need to generate the mean for ([11, 12, 10)]
as they are closest to p = 15
有了上面的数字,我需要找到最接近 p 的 k 个点的平均值,p 可以在数组中明确说明,也可以不明确说明。
我是新手,在这一点上很困惑,觉得我已经用尽了所有资源。我觉得以前有人问过这个问题,但答案对于我需要的来说太复杂了。
提前致谢。
给定 (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()
returns 对数组进行排序的索引 。我们感兴趣的是 n
最小的绝对差异。这才是您真正要寻找的,而不是直接对差异进行排序。
np.abs(arr - p).argsort()[:3]
# array([12, 11, 13])
最后,您想要索引您的输入数组 arr
并取其平均值:
arr[[12, 11, 13]]
# array([12, 11, 10]) # mean: 11.0
我需要定义一个函数,该函数读取一个 numpy 数组并生成与数组中数字 p 最接近的 k 个点的平均值。
示例:
array= np.array([1, 2, 3, 4, 5, 6, 7, 50, 24, 32, 9, 11, 12, 10])
p= 15 (**Note this is not a number in the array, I will need to find the
number closest to p or p number itself)
k = 3
In this case, I would need to generate the mean for ([11, 12, 10)]
as they are closest to p = 15
有了上面的数字,我需要找到最接近 p 的 k 个点的平均值,p 可以在数组中明确说明,也可以不明确说明。
我是新手,在这一点上很困惑,觉得我已经用尽了所有资源。我觉得以前有人问过这个问题,但答案对于我需要的来说太复杂了。
提前致谢。
给定 (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()
returns 对数组进行排序的索引 。我们感兴趣的是 n
最小的绝对差异。这才是您真正要寻找的,而不是直接对差异进行排序。
np.abs(arr - p).argsort()[:3]
# array([12, 11, 13])
最后,您想要索引您的输入数组 arr
并取其平均值:
arr[[12, 11, 13]]
# array([12, 11, 10]) # mean: 11.0