检查数组中数组的存在性

2024-05-26 22:56:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个numpy数组:

qv=array([[-1.075, -1.075, -3.   ],
       [-1.05 , -1.075, -3.   ],
       [-1.025, -1.075, -3.   ],
       ..., 
       [-0.975, -0.925, -2.   ],
       [-0.95 , -0.925, -2.   ],
       [-0.925, -0.925, -2.   ]])

我想确定一个数组是否包含在这个二维数组中,并返回它的索引。你知道吗

qt=array([-1.  , -1.05, -3.  ])

我可以将两个数组转换为列表并使用列表.索引()功能:

qlist=qv.tolist()
ql=qt.tolist()
qindex=qlist.index(ql)

但我想避免这样做,因为我认为这将是一个性能打击。你知道吗


Tags: 功能numpy列表index数组性能qtarray
1条回答
网友
1楼 · 发布于 2024-05-26 22:56:06

这样就可以了

import numpy as np
np.where((qv == qt).all(-1))

或者

import numpy as np
tol = 1e-8
diff = (qv - qt)
np.where((abs(diff) < tol).all(-1))

当出现浮点精度问题时,第二种方法可能更合适。另外,如果您有许多qt要测试,可能还有更好的方法。例如scipy.spatial.KDTree。你知道吗

相关问题 更多 >

    热门问题