Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:查找索引_Python_Arrays_Numpy_Find_Vectorization - Fatal编程技术网

Python:查找索引

Python:查找索引,python,arrays,numpy,find,vectorization,Python,Arrays,Numpy,Find,Vectorization,如果我有a和b: a=[[1,2,3], [4,5,6], [7,8,9]] b=8.1 我想找到a中b值的索引,我可以: nonzero(abs(a-b)<0.5) 我想得到(2,1),(0,2),(2,2) 一般来说,我希望a中的每一个b值只有一个匹配项。我可以避免for循环吗?使用列表理解: [nonzero(abs(x-a)<0.5) for x in b] [非零(abs(x-a)矢量化进近- 在b上使用列表理解。如果b是2d数组怎么办?然后使用嵌套列表

如果我有a和b:

a=[[1,2,3],
   [4,5,6],
   [7,8,9]]

b=8.1
我想找到a中b值的索引,我可以:

nonzero(abs(a-b)<0.5)
我想得到(2,1),(0,2),(2,2)


一般来说,我希望a中的每一个b值只有一个匹配项。我可以避免for循环吗?

使用列表理解:

[nonzero(abs(x-a)<0.5) for x in b]
[非零(abs(x-a)矢量化进近-


b
上使用列表理解。如果b是2d数组怎么办?然后使用嵌套列表理解。输出数组的第一个条目不应该是
[2,1]
而不是
[0,2]
?有没有办法防止它重新排序数组?我需要:
数组([[2,1],[0,2],[2,2]]))
@AB请查看编辑。假设顺序很重要,请进行相应编辑。
[nonzero(abs(x-a)<0.5) for x in b]
np.argwhere((np.abs(a - b[:,None,None])<0.5))[:,1:]
In [71]: a
Out[71]: 
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

In [72]: b
Out[72]: array([ 8.1,  3.1,  9.1,  0.7])

In [73]: np.argwhere((np.abs(a - b[:,None,None])<0.5))[:,1:]
Out[73]: 
array([[2, 1],
       [0, 2],
       [2, 2],
       [0, 0]])