我正在用 Python 编写代码,但遇到了一些问题。我有两个数组,比如说 A 和 B,它们都包含 ID。A 具有所有 ID,B 具有属于某个组的 ID。我想要做的是使用代码获取 B 元素在 A 中的位置:
>>> print B
[11600813 11600877 11600941 ..., 13432165 13432229 13434277]
>>> mask=np.nonzero(np.in1d(A, B))
>>> print A[mask]
[12966245 12993389 12665837 ..., 13091877 12965029 13091813]
但这显然是错误的,因为我没有恢复 B 的值。检查我是否使用numpy.in1d()
正确,我尝试了:
>>> mask=np.nonzero(np.in1d(A, B[0]))
>>> print A[mask]
[11600813]
这是正确的,所以我猜 'B' in 有问题numpy.in1d()
。我尝试直接使用布尔值np.in1d(A, B)
而不是将其转换为索引,但它不起作用。我也尝试使用B = numpy.array(B)
, B = list(B)
,但它们都不起作用。
但如果我这样做B = numpy.array(B)[0]
,B = list(B)[0]
它仍然适用于该元素。不幸的是,我不能为每个元素做一个“for”循环,因为len(A)
它是 16777216 和len(B)
9166,所以它需要很多时间。
我还确保 B 的所有元素都在 A 中:
>>> np.intersect1d(A, B)
[11600813 11600877 11600941 ..., 13432165 13432229 13434277]