通过另一个数组/列表的索引来替换一个数组/列表中的值

问题描述:

我有一个看似简单的问题,如果不进行循环,我似乎无法解决这个问题。 (我处理非常大的阵列)通过另一个数组/列表的索引来替换一个数组/列表中的值

比方说为了简单起见,我有一个排序后的数组和不同的尺寸的未分类的阵列,例如: X = np.array([511512513])和 Y = np.array([512,512,513,511,511])。 我想要一个快速函数,用排序的min到max数组x中给出的索引位置替换y。 应该输出答案= np.array([1,1,2,0,0])

我希望能够在一个或两个步骤中做到这一点。任何帮助,将不胜感激,谢谢

+0

转换数组排序,这样的指数是使用价值和价值的位置。也就是'[511 => 0,512 => 1,513 => 2]''''''当您按键查找'sorted array'时,未排序数组的查找速度会很快。 –

+1

谢谢你的工作。这是我用的:dictionary = dict(zip(x,z)),其中z是索引数组[0,1,2]。然后一个列表理解l = [dicitonary [i]为我在unsortedlist]。 Mucho快。 – Canuck

searchsorted()正是你想要做什么:(?HashMap中)

import numpy as np 

x=np.array([511,512,513]) 
y=np.array([512,512,513,511,511]) 
np.searchsorted(x, y) # array([1, 1, 2, 0, 0])