我有一个数组
v = (x,y,z)
和两个多维数组
l = (a,b,c),(d,e,f)
和
r = (g,h,i),(l,m,n),(x,y,z).
我想知道索引v
是在第一个还是第二个多维数组中。我尝试过,numpy.where(v==l)[0][0]
但返回:
索引0超出尺寸0的轴0的范围。
仅在我知道必须在索引中搜索索引的矩阵之前起作用,但是我没有。谢谢
如果我想知道索引和包含它的数组?
定义一个函数,该函数接受要搜索的项目以及要在其中搜索的数组的列表,并使用循环在每个数组中查找该项目。使用异常处理来捕获IndexError
。
>>> import numpy as np
>>> v = np.array([[1, 2, 3]])
>>> r = np.array([[1, 2, 3], [0, 9, 8], [2, 4, 4]])
>>> l = np.array([[4, 5, 6], [7, 8, 9]])
def get_index(seq, *arrays):
for array in arrays:
try:
return np.where(array==seq)[0][0]
except IndexError:
pass
...
>>> get_index(v, r, l)
0
>>> get_index(np.array([7, 8, 9]), r, l)
1
None
如果在任何数组中都找不到该项目,则将得到输出。
更新:
如果还需要名称,则在字典中传递数组:
def get_index(seq, **arrays):
for name, array in arrays.items():
try:
return name, np.where(array==seq)[0][0]
except IndexError:
pass
...
>>> get_index(v, **dict(r=r, l=l))
('r', 0)
>>> get_index(np.array([7, 8, 9]), **dict(r=r, l=l))
('l', 1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句