Python 需要一个函数来返回一个估计值,该值等于距离数字p最近的k个点的平均值吗?

Python 需要一个函数来返回一个估计值,该值等于距离数字p最近的k个点的平均值吗?,python,numpy,knn,Python,Numpy,Knn,定义一个函数,该函数采用一维NumPy数组、参数k和数字p。该函数返回一个估计值,该值等于距离数字p最近的k点的平均值 def k_邻居(输入_数据,k,p): “”“使用数据输入返回p的k近邻估计值。\u data Keyword arguments: input_data -- NumPy array of all the data k -- Number of k p -- input values 下面是函数调用 数据=np.数组([1,3,4,5,7,8,11,12,13,15,19

定义一个函数,该函数采用一维NumPy数组、参数k和数字p。该函数返回一个估计值,该值等于距离数字p最近的k点的平均值

def k_邻居(输入_数据,k,p): “”“使用数据输入返回p的k近邻估计值。\u data

Keyword arguments:
input_data -- NumPy array of all the data
k -- Number of k
p -- input values
下面是函数调用

数据=np.数组([1,3,4,5,7,8,11,12,13,15,19,24,25,29,40]) 打印(k_neighbor(input_data=data,k=3,p=5))

从位复制并调整位可以满足您的需要:

import numpy as np
def find_nearest(array, value,n_neighbors=1):
    distances=np.abs(array - value)
    print(distances)

    nearest_neighbors=[]
    for i in range(0,n_neighbors):
        idx=distances.argmin()
        nearest_neighbors.append(array[idx])
        distances[idx]=np.amax(distances)

    return nearest_neighbors

data=np.array([1,3,4,5,7,8,11,12,13,15,19,24,25,29,40])
value=24
print(find_nearest(data, value,n_neighbors=3))
返回

[24,25,19]


你看过这个:?@joris:看过了,但是我的是一维数组在上面的代码中,如果我取value=25,那么它会给出25作为最近邻导入numpy作为np def find_nearest(数组,value,n_nearches=3):distance=np.abs(数组-value)nearcher_nearches=[]对于范围内的i(0,n_nearches):idx=distance.argmin()最近邻。追加(数组[idx])距离[idx]=距离。argmax()返回最近邻数据=np。数组([1,3,4,5,7,8,11,12,13,15,19,24,25,29,40])值=25打印(查找最近邻(数据,值,n_邻居=3))导入numpy作为np def查找最近邻(数组,值,n_邻居=3):距离=np.abs(数组-值)最近邻=[]对于范围内的i(0,n邻):idx=距离。argmin()最近邻。append(数组[idx])距离[idx]=距离。argmax()返回最近邻数据=np。数组([1,3,4,5,7,8,11,12,13,15,19,24,25,29,40])值=25打印(查找最近邻(数据,值,n邻=3))在这种情况下,值是重复的。我已经更改了它,所以当搜索值已经存在时,它也会返回三个最接近的数字。但是我相信你自己也可以这样做。