找出数组中非重复元素的下标
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]),)
以上是关于找出数组中非重复元素的下标的主要内容,如果未能解决你的问题,请参考以下文章
用最小的空间复杂度找出一个长度为n的数组且数据中的元素是[0,n-1]中任一个重复的数据。
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度
JavaScript找出两个一维数组中相同元素以及它们各自在所在数组中的下标有无return和return fasle区别