我有两个不同长度的数组。对于array_1
中的每个元素,我想找到array_2
中匹配元素的位置。这包括array_1
中的重复项。
举例来说:
array_1 = np.array([555, 641, 1000, 641, 4, 641])
array_2 = np.array([4, 555, 641, 1000])
字符串
期望的输出将是:
out = [1,2,3,2,0,2]
型
对于array_1
中的每个元素,在array_2
中都有一个匹配的元素。array_2
是唯一的且已排序。实际上,每个数组有大约一百万个术语。
下面的解决方案可以工作,但对于我需要的东西来说太慢了:
out = [np.where(array_2 == x) for x in array_1]
型
2条答案
按热度按时间y53ybaqx1#
假设所有唯一项都存在于两个数组中。
如果array_2是排序的,那么它甚至不需要使用它,
numpy.unique
就足够了。字符串
输出:
array([1, 2, 3, 2, 0, 2])
如果
array_2
没有排序,那么需要对numpy.argsort
进行一些后处理:型
输出:
array([0, 1, 3, 1, 2, 1])
xriantvc2#
使用方式
字符串
尽可能进行矢量化。