用另一个数组中最接近的值替换numpy数组中的元素

给定两个具有aa和大小不同的数组bb,我需要将其中的元素替换为最接近的aa那些元素bb。


这就是我现在所拥有的。它有效[*],但我想知道是否有更好的方法。


import numpy as np


# Some random data

aa = np.random.uniform(0., 1., 100)

bb = np.array([.1, .2, .4, .55, .97])


# For each element in aa, find the index of the nearest element in bb

idx = np.searchsorted(bb, aa)

# For indexes to the right of the rightmost bb element, associate to the last

# bb element.

msk = idx > len(bb) - 1

idx[msk] = len(bb) - 1


# Replace values in aa

aa = np.array([bb[_] for _ in idx])


慕虎7371278
浏览 170回答 2
2回答

MYYA

您必须计算aa和 中每个元素之间的差异bb,并取最小值:aa_nearest = bb[abs(aa[None, :] - bb[:, None]).argmin(axis=0)]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python