numpy 查找一列的最接近匹配索引,并返回Test 1D Array的另一列值

vlf7wbxs  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(94)

我有两个numpy数组Array1, Array2Array1的形状为(27000,),而Array2的形状为(501,3)。这两个数组都有np.float32数值。我必须做到以下几点:
1.首先,对于Array1中的每个元素,在Array2的第一列中找到最接近的匹配元素(索引)。
1.接下来,从Array2的第二(或第三)列中检索这些“最近匹配”索引的值。在这里,我想选择是从第二列还是从第三列获得值。
我正在寻找一个快速的Numpy解决方案(最好是一行程序),因为这个操作出现在我的代码中的某个地方,现在我的当前实现(我将其分为两部分,即首先获取索引,然后选择相应的值),这似乎需要一些时间。我目前的实现是:

indices   =  abs(Array1[:, None] - Array2[:,0][None, :]).argmin(axis=-1)
final_val =  Array2[indices,2]

人们可能会期望一个简单的Numpy操作应该足够快,然而,我需要运行我的程序数千次,所以在这方面节省的任何时间(最耗时的部分)都会对我有很大的帮助。

zpjtge22

zpjtge221#

我想我在这里找到了答案:
NumPy: Vectorize finding closest value in an array for each element in another array
简而言之,使用numpy.searchsorted()可以获得更好的性能。

相关问题