为了账号安全,请及时绑定邮箱和手机立即绑定

是否有一个NumPy函数来返回数组中某物的第一个索引?

是否有一个NumPy函数来返回数组中某物的第一个索引?

红颜莎娜 2019-08-02 07:03:04
是否有一个NumPy函数来返回数组中某物的第一个索引?我知道Python列表有一种方法可以返回某些内容的第一个索引:>>> l = [1, 2, 3]>>> l.index(2)1对于NumPy数组有类似的东西吗?
查看完整描述

3 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

是的,这是给出一个NumPy数组的答案,array,还有一个价值,item,搜寻:

itemindex = numpy.where(array==item)

结果是一个元组,首先是所有行索引,然后是所有列索引。

例如,如果一个数组是两个维度,并且它在两个位置包含了您的项,那么

array[itemindex[0][0]][itemindex[1][0]]

就等于你的物品

array[itemindex[0][1]][itemindex[1][1]]

numpy.where



查看完整回答
反对 回复 2019-08-05
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

如果需要第一次出现的索引只有一个值,你可以用nonzero(或where,在本例中相当于相同的内容):

>>> t = array([1, 1, 1, 2, 2, 3, 8, 3, 8, 8])>>> nonzero(t == 8)(array([6, 8, 9]),)>>> nonzero(t == 8)[0][0]6

的第一个索引。多值,您显然可以重复执行上面的操作,但是有一个技巧可能会更快。下面查找每个元素的第一个元素的索引子序列:

>>> nonzero(r_[1, diff(t)[:-1]])(array([0, 3, 5, 6, 7, 8]),)

注意,它找到3s的子序列和8s的子序列的开头:

[1, 1, 1, 2, 2, 3, 8, 3, 8, 8]

所以这和找到第一个发生每一种价值。在您的程序中,您可以使用排序版本的t为了得到你想要的:

>>> st = sorted(t)>>> nonzero(r_[1, diff(st)[:-1]])(array([0, 3, 5, 7]),)




查看完整回答
反对 回复 2019-08-05
?
慕码人2483693

TA贡献1860条经验 获得超9个赞


还可以将NumPy数组转换为空列表并获取其索引。例如,

l = [1,2,3,4,5] # Python lista = numpy.array(l) # NumPy arrayi = a.tolist().index(2) # i will return index of 2print i

它将打印1。


 


查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 457 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信