找出数组中非重复元素的下标

Posted 修炼之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找出数组中非重复元素的下标相关的知识,希望对你有一定的参考价值。

导读

如何来快速找到,数组中非重复元素的下标,我们取元素第一次出现位置的下标,下面介绍几种方法来实现这个功能

  • 通过list和set来实现
import numpy as np

a = np.array([0,0,0,2,2,2,1,1,1])
item_set = set(a.tolist())#获取所有没有重复的元素
#通过index来寻找下标
res_index = [a.tolist().index(i) for i in item_set]
print(res_index)
  • 通过where函数来实现
import numpy as np

a = np.array([[0,1,2,3],[3,2,1,4]])
#获取数组中不相等的元素
set_a = set(a.flatten().tolist())
#获取元素第一次出现时的下标索引
for item in set_a:
    row_indexs,col_indexs = np.where(a == item)
    print(row_indexs[0],col_indexs[0])
    """
    0 0
    0 1
    0 2
    0 3
    1 3
    """

用argwhere也可以实现

  • 通过nonzero实现
import numpy as np

t = np.array([1, 1, 1, 2, 2, 3, 8, 3, 8, 8])
print(np.nonzero(t == 8))#(array([6, 8, 9]),)
print(np.nonzero(t == 8)[0][0])#6
#对数组前后两个元素是否相等,不相等时返回下标
#如果用这个方法来找第一个元素出现的位置时,需要先对数组进行排序
print(np.nonzero(np.r_[1, np.diff(t)[:-1]]))#(array([0, 3, 5, 6, 7, 8]),)

以上是关于找出数组中非重复元素的下标的主要内容,如果未能解决你的问题,请参考以下文章