Рассмотрим два массива разной длины:
A = np.array([58, 22, 86, 37, 64])
B = np.array([105, 212, 5, 311, 253, 419, 123, 461, 256, 464])
Для каждого значения в A
я хочу найти наименьшую абсолютную разницу между значениями в A
и B
.Я использую Pandas
, потому что мои фактические массивы - это подмножества фреймов данных Pandas, а также потому, что метод apply
является удобным (хотя и медленным) подходом для определения разницы между двумя массивами разных размеров:
In [22]: pd.Series(A).apply(lambda x: np.min(np.abs(x-B)))
Out[22]:
0 47
1 17
2 19
3 32
4 41
dtype: int64
НО Я также хочу сохранить знак, поэтому желаемый вывод:
0 -47
1 17
2 -19
3 32
4 -41
dtype: int64
[обновление] мои фактические массивы A
и B
являютсяприблизительно 5e4 и 1e6 в длину, так что решение с низким объемом памяти было бы идеальным.Кроме того, я хочу избегать использования Pandas, потому что это очень медленно на реальных массивах.