假设我有一个像这样的2d数组:
a= array([[151, 24],
[152, 24],
[153, 24],
...,)A将返回array([151, 24])。但是,如果我想返回数组元素[151, 24]的索引,则np.where和np.isin都不工作(它们都返回True/False的列表)。我也尝试过.any()和.all(),但没有成功。
是否有一种在2d数组中找到数组元素索引的优雅方法?
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))发布于 2021-08-27 23:40:41
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)))输出:
(array([0]),)发布于 2021-08-27 23:40:32
使用numpy.argwhere。这类似于where,但返回的是找到的起诉书,而不是元素
https://stackoverflow.com/questions/68960248
复制相似问题