Numpy:快速/简单的方法来获取其值等于另一个数组的数组的索引?

时间:2014-12-23 15:59:35

标签: python arrays numpy

假设我有一个整数数组x,我想做以下事情:

  1. 获取unique_x
  2. 的唯一值的数组x
  3. 构建一个数组y,其中y[i]是值unique_x的{​​{1}}中的索引。
  4. 我设法做到如下:

    x[i]

    我的问题是:有没有办法只使用numpy内置函数和一些切片?我觉得如果用numpy内置函数完成这个循环的速度不会那么快。

1 个答案:

答案 0 :(得分:2)

如果np.unique()执行了您想要的操作(仅返回每个元素的第一个出现;它不会仅返回出现一次的元素),则可以使用return_index参数:

In [1]: x = array([1, 1, 2, 3, 4, 4, 5, 6, 2, 1])
In [2]: unique_x, unique_indexes = np.unique(x, return_index=True)
In [3]: unique_x
Out[3]: array([1, 2, 3, 4, 5, 6])
In [4]: unique_indexes
Out[4]: array([0, 2, 3, 4, 6, 7])

x不需要排序,但unique_x将是。如果你想要从x重建unique_x所需的标记,另一方面,你可以使用return_inverse参数,如@xtofl所指出的那样:

In [5]: unique_x, unique_inverse = np.unique(x, return_inverse=True)
In [6]: unique_inverse
Out[6]: array([0, 0, 1, 2, 3, 3, 4, 5, 1, 0])