У меня два массива numpy Array1, Array2
. Array1
имеет форму (27000,)
, а Array2
имеет форму (501,3)
. Оба массива содержат внутри себя значения np.float32
numeri c. Мне нужно сделать следующее:
- Во-первых, для каждого элемента в
Array1
найти (индекс) ближайшего совпадающего элемента в первом столбце Array2
. - Затем извлеките значения для этих индексов "ближайшего соответствия" из второго (или третьего) столбца
Array2
. Здесь я хотел бы иметь выбор, хочу ли я иметь значения из второго или из третьего столбца.
Я ищу быстрое Numpy решение для этого (желательно однострочное), потому что эта операция появляется где-то внутри моего кода, и сейчас моя текущая реализация (где я разбиваю ее на две части, т.е. сначала получаю индексы, а затем выбираю соответствующие значения), похоже, это занимает некоторое время. Моя текущая реализация:
indices = abs(Array1[:, None] - Array2[:,0][None, :]).argmin(axis=-1)
final_val = Array2[indices,2]
Можно было бы ожидать, что простая операция Numpy для этого должна быть достаточно быстрой, однако мне нужно запускать мою программу тысячи раз, поэтому любая экономия времени на этом ( наиболее трудоемкая часть) мне очень поможет.
Заранее благодарен за вашу помощь.
ИЗМЕНИТЬ ИСТОРИЮ:
- Сделал заголовок вопроса более кратким и ясным.