2024-03-28 20:34:36 发布
网友
如何避免在比较10.5和10时返回真索引?你知道吗
10.5
10
A = np.array([1,2,3,4,5,6,7,8,9,10.5]) B = np.array([1,7,10]) i = np.searchsorted(A,B) print i # [0 6 9]
我想得到精确匹配的位置:[0 6]
[0 6]
您可以将^{}与left和right一起使用,并且只保留那些不同时返回相同索引的对象:
left
right
>>> import numpy as np >>> A = np.array([1,2,3,4,5,6,7,8,9,10.5]) >>> B = np.array([1,7,10]) >>> i = np.searchsorted(A, B, 'left') >>> j = np.searchsorted(A, B, 'right') >>> i[i!=j] array([0, 6], dtype=int64)
这是因为searchsorted返回一个索引,如果您想对另一个数组进行排序,则需要在其中插入元素。因此,当值出现在另一个数组中时,它返回匹配前的索引(left)和匹配后的索引(right)。因此,如果索引不同,则存在完全匹配,如果索引相同,则不存在完全匹配
searchsorted
首先,您可以帮助searchsorted,因为A是排序的,为了获得更好的复杂性:
A = np.array([1,2,3,4,5,6,7,8,9,10.5]) B = np.array([1,7,10]) i = np.searchsorted(A,B,sorter=range(len(A)))
然后in1d可以找到确切的对应关系:
in1d
j = i[np.in1d(A[i],B,True)] # [0,6]
您可以将^{} 与
left
和right
一起使用,并且只保留那些不同时返回相同索引的对象:这是因为
searchsorted
返回一个索引,如果您想对另一个数组进行排序,则需要在其中插入元素。因此,当值出现在另一个数组中时,它返回匹配前的索引(left
)和匹配后的索引(right
)。因此,如果索引不同,则存在完全匹配,如果索引相同,则不存在完全匹配首先,您可以帮助
searchsorted
,因为A是排序的,为了获得更好的复杂性:然后
in1d
可以找到确切的对应关系:相关问题 更多 >
编程相关推荐