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

弗兰克·德农库特:

有没有办法一次获取NumPy数组中几个元素的索引?

例如

import numpy as np
a = np.array([1, 2, 4])
b = np.array([1, 2, 3, 10, 4])

我想找到ain 中每个元素的索引b,即:[0,1,4]

我发现我使用的解决方案有点冗长:

import numpy as np

a = np.array([1, 2, 4])
b = np.array([1, 2, 3, 10, 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]
亚历克斯·赖利(Alex Riley):

您可以使用in1dnonzero(或where为此):

>>> np.in1d(b, a).nonzero()[0]
array([0, 1, 4])

这对于您的示例数组很好用,但是通常返回的索引数组不遵循中的值顺序a这可能是个问题,具体取决于您下一步要做什么。

在这种情况下,更好的答案是一个@Jaime给出了这里,使用searchsorted

>>> sorter = np.argsort(b)
>>> sorter[np.searchsorted(b, a, sorter=sorter)]
array([0, 1, 4])

返回值在中出现的索引a例如:

a = np.array([1, 2, 4])
b = np.array([4, 2, 3, 1])

>>> sorter = np.argsort(b)
>>> sorter[np.searchsorted(b, a, sorter=sorter)]
array([3, 1, 0]) # the other method would return [0, 1, 3]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

一次获取Tensorflow中几个元素的索引

一次删除numpy数组中某个值的元素

numpy np.where扫描数组一次以获取对应于T / F条件的两组索引

numpy np.where扫描数组一次以获取对应于T / F条件的两组索引

在数据框列中获取一系列元素中第一次出现的索引

在numpy数组中查找max元素的索引(不包括几个索引)

Laravel eloquent 获取索引一次

jQuery vTicker-一次只有几个元素

是否可以一次获取几个表的列?

获取元素的最后一次出现

获取 numpy 2d 数组中的所有行索引,其中每行中的元素在整个数组中存在超过 2 次

如何获取numpy数组中元素的索引?

获取numpy数组中元素的索引

按索引从结果数组中获取一个元素

数组元素的所有置换一次在C ++中占用一定数量的元素

如果一次又一次重复,则从数组中获取一个值

如何从句子中的arraylist中获取任何单词第一次出现的索引

确定向量中仅出现一次的元素的索引

使用Unity中的GetKeyDown一次显示一个数组中的元素

以相反的顺序从numpy数组中获取一些元素

查找2d数组中没有循环的匹配行的索引(一次拍摄)

PHP从给定索引的多维数组中查找最后一次出现

如何在Java中仅声明一次具有特定索引的数组?

在python列表中获取连续性第一次中断的索引

如何获取列中组第一次出现的索引?

在张量流中一次从张量获取多个索引中的值

如何获取PowerShell字符串中char的最后一次出现的索引?

Haskell-获取字符串列表中第一次出现的索引

setRichTextValue 到数组中的元素而不是一次一个单元格?