python – 一次获取NumPy数组中的几个元素的索引

python – 一次获取NumPy数组中的几个元素的索引,第1张

概述有没有办法一次获取NumPy数组中的几个元素索引? 例如. import numpy as npa = np.array([1, 2, 4])b = np.array([1, 2, 3, 10, 4]) 我想找到a中每个元素的索引,即:[0,1,4]. 我发现我使用的解决方案有点冗长: import numpy as npa = np.array([1, 2, 4])b = np.ar 有没有办法一次获取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_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]
解决方法 您可以使用 in1dnonzero(或者就此而言):

>>> 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]
总结

以上是内存溢出为你收集整理的python – 一次获取NumPy数组中的几个元素的索引全部内容,希望文章能够帮你解决python – 一次获取NumPy数组中的几个元素的索引所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1191005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存