python – 一次获取NumPy数组中的几个元素的索引
发布时间:2020-12-20 10:31:47 所属栏目:Python 来源:网络整理
导读:有没有办法一次获取NumPy数组中的几个元素的索引? 例如. import numpy as npa = np.array([1,2,4])b = np.array([1,3,10,4]) 我想找到a中每个元素的索引,即:[0,1,4]. 我发现我使用的解决方案有点冗长: import numpy as npa = np.array([1,4])c = np.zeros
有没有办法一次获取NumPy数组中的几个元素的索引?
例如. import numpy as np a = np.array([1,2,4]) b = np.array([1,3,10,4]) 我想找到a中每个元素的索引,即:[0,1,4]. 我发现我使用的解决方案有点冗长: import numpy as np a = np.array([1,4]) c = np.zeros_like(a) for i,aa in np.ndenumerate(a): c[i] = np.where(b==aa)[0] print('c: {0}'.format(c)) 输出: c: [0 1 4] 解决方法
您可以使用
in1d 和
nonzero (或者就此而言):
>>> np.in1d(b,a).nonzero()[0] array([0,4]) 这适用于您的示例数组,但通常返回的索引数组不符合a中值的顺序.这可能是一个问题,具体取决于您下一步要做什么. 在这种情况下,一个更好的答案是@Jaime使用searchsorted给出here: >>> sorter = np.argsort(b) >>> sorter[np.searchsorted(b,a,sorter=sorter)] array([0,4]) 这将返回值中的值的索引.例如: a = np.array([1,4]) b = np.array([4,1]) >>> sorter = np.argsort(b) >>> sorter[np.searchsorted(b,sorter=sorter)] array([3,0]) # the other method would return [0,3] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |