Нужна функция, которая возвращает оценку, равную среднему из ближайших k точек к числу p? - PullRequest
0 голосов
/ 27 января 2020

Определите функцию, которая принимает массив 1-d NumPy, параметр k и число p. Функция возвращает оценку, равную среднему значению ближайших k точек с числом p?

def k_neighbor (input_data, k, p): "" "Возвращает оценку k-соседей для p с использованием данных input_data.

Keyword arguments:
input_data -- NumPy array of all the data
k -- Number of k
p -- input values

Вот вызов функции

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

1 Ответ

1 голос
/ 27 января 2020

Копирование из Поиск ближайшего значения в numpy массив и настройка бита дает то, что вы хотите:

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]

...