我有两个数组A和B。
A is [ 1 , 2 , 3].
B is [ 6 , 3 , 2, 8, 9, 1].
我知道A的每个元素都在B中。所以,如果我这样做
np.in1d(B, A)
我应该找回大小为B的True / False数组,它在每个元素为A的索引处都是True是吗?
现在,我希望B的元素的索引为True。所以我这样做:
np.where(np.in1d(B,A))
这应该返回与A完全相同的大小。
返回:(array([1, 2, 5]),)
因此这意味着B [1],B [2],B [5]为True。
因此它适用于这种简单的情况。
现在让我们移至我的数据。
我有2个浮点数组。
all_points3Dids of shape (102981,)
keypoints_points3Dids of shape(7934,)
现在我知道keypoints_points3Dids
中的每个点都在all_points3Dids
中。我怎么知道的?
由于此循环:
count = 0
for i in range(len(keypoints_points3Dids)):
for k in range(len(all_points3Dids)):
if(keypoints_points3Dids[i] == all_points3Dids[k]):
count = count + 1
print str(keypoints_points3Dids[i]) + " = " + str(all_points3Dids[k])
返回count = 7934
现在,让我们用numpy重复与A
和B
相同的过程。
np.in1d(all_points3Dids , keypoints_points3Dids)
我应该找回大小为all_points3Dids
的True / False数组,它在每个元素为keypoints_points3Dids
是的索引处都是True吗?
不,我不知道。
如果我运行此np.where(np.in1d(all_points3Dids, keypoints_points3Dids))
我得到的数组大小为(1, 7831)
...
我缺少103个元素。
这里有帮助吗?