Как найти элементы массива numpy, которые закрыты для данного целевого набора? - PullRequest
0 голосов
/ 03 апреля 2020

Допустим, у меня есть массив numpy:

arr = np.array([1,2,3,4,9,11])

, и я хотел бы найти элементы целевого массива:

target = np.array([3,10])

, наиболее близких к элементам исходного массива. Таким образом, результаты будут:

[3,3,3,3,10,10] Поскольку 1,2,3,4 сопоставлены с 3 из целевого массива, а 9,11 сопоставлены с 10.

Is есть функция в scipy / numpy, чтобы сделать это?

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Я думаю, что нет прямой функции. Этот однострочник может делать то, что вы хотите.

Сначала выберите индексы с минимальной разницей и возьмите значения из целевого массива.

arr = target[abs(arr[None, :] - target[:, None]).argmin(axis=0)]
0 голосов
/ 03 апреля 2020
import numpy as np
ar = np.array([1,2,3,4,9,11])
tar = np.array([3,10])
def target(arr,target):
    ans=np.empty([len(arr)], dtype=int)
    for elem in range(arr.size):
        dist=[]
        for ele in range(target.size):
            dist.append(abs(target[ele]-arr[elem]))
        ans[elem]=target[dist.index(min(dist))]
    return ans

print(target(ar,tar))

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...