首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找numpy中数组中数组元素的索引

查找numpy中数组中数组元素的索引
EN

Stack Overflow用户
提问于 2021-08-27 23:32:14
回答 2查看 62关注 0票数 1

假设我有一个像这样的2d数组:

代码语言:javascript
运行
复制
a= array([[151,  24],
       [152,  24],
       [153,  24],
       ...,)

A将返回array([151, 24])。但是,如果我想返回数组元素[151, 24]的索引,则np.wherenp.isin都不工作(它们都返回True/False的列表)。我也尝试过.any()和.all(),但没有成功。

是否有一种在2d数组中找到数组元素索引的优雅方法?

代码语言:javascript
运行
复制
np.isin(a, [151,  24])
>> array([[ True,  True],
       [False,  True],
       [False,  True],
       ...,
       [False, False],
       [False, False],
       [False, False]])

np.where(a == [151,  24])
>> (array([    0,     0,     1,     2,     5,    14,    28,    66,   108,
          149,   184,   213,   239,   259,   269,   280,   291,   305,
          320,  2737,  2779,  2823,  2880,  2935,  2999,  3075,  4295,
         4365,  4442,  4530,  4621,  4713,  4809,  4901,  4994,  5269,
         6140,  6265,  6394,  6918,  7060,  7203,  7348,  7492,  7632,
         7770,  7917,  8068,  8219,  8372,  8687,  8847,  9009,  9179,
         9348,  9671,  9831,  9999, 10169, 10344, 10523, 13261, 13432,
        13743, 13892, 14042, 14198, 14364, 14533, 14702, 14870, 15035,
        15199, 15361, 15523, 15685, 15849, 16010, 16169, 16325, 16481,
        16638, 16791, 16948, 17100, 17250, 17399, 17544, 17684, 17819,
        17951, 18085, 18213, 18337, 18450, 18557, 18664, 18770, 18874,
        18978, 19085, 19194, 19301, 19410, 19518, 19619, 19714, 19806,
        19897, 19988, 20078, 20162, 20242, 20321, 20396, 20467, 20541,
        20617, 20690, 20756, 20817, 20883, 20945, 21002, 21063],
       dtype=int64),
 array([0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int64))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-27 23:40:41

代码语言:javascript
运行
复制
import numpy as np

a = np.array([[151,  24],
       [152,  24],
       [153,  24]])

b = [151,  24]

print(np.where((np.isin(a,b)).all(axis=1)))

输出:

代码语言:javascript
运行
复制
(array([0]),)
票数 0
EN

Stack Overflow用户

发布于 2021-08-27 23:40:32

使用numpy.argwhere。这类似于where,但返回的是找到的起诉书,而不是元素

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68960248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档