您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 计算两个numpy数组之间相交值的有效方法

5b51 2022/1/14 8:22:28 python 字数 5827 阅读 545 来源 www.jb51.cc/python

我的程序中存在瓶颈,原因如下: A = numpy.array([10,4,6,7,1,5,3,4,24,1,1,9,10,10,18]) B = numpy.array([1,4,5,6,7,8,9]) C = numpy.array([i for i in A if i in B]) C的预期结果如下: C = [4 6 7 1 5 4 1 1 9] 有没有更有效的方法来执行此操作? 请注意

概述

A = numpy.array([10,4,6,7,1,5,3,24,9,10,18])
B = numpy.array([1,8,9])

C = numpy.array([i for i in A if i in B])@H_419_3@ 
 

C的预期结果如下:

C = [4 6 7 1 5 4 1 1 9]@H_419_3@ 
 

有没有更有效的方法来执行此操作?

请注意,数组A包含重复值,需要将它们考虑在内.我无法使用集合交集,因为取交点将省略重复值,仅返回[1,9].

另请注意,这只是一个简单的演示.实际的阵列大小可以是数千,而不是数百万.

C = [4 6 7 1 5 4 1 1 9]@H_419_3@ 
 

有没有更有效的方法来执行此操作?

请注意,数组A包含重复值,需要将它们考虑在内.我无法使用集合交集,因为取交点将省略重复值,仅返回[1,9].

另请注意,这只是一个简单的演示.实际的阵列大小可以是数千,而不是数百万.

C的预期结果如下:

有没有更有效的方法来执行此操作?

请注意,数组A包含重复值,需要将它们考虑在内.我无法使用集合交集,因为取交点将省略重复值,仅返回[1,9].

另请注意,这只是一个简单的演示.实际的阵列大小可以是数千,而不是数百万.

C的预期结果如下:

C = [4 6 7 1 5 4 1 1 9]@H_419_3@ 
 

有没有更有效的方法来执行此操作?

请注意,数组A包含重复值,需要将它们考虑在内.我无法使用集合交集,因为取交点将省略重复值,仅返回[1,9].

另请注意,这只是一个简单的演示.实际的阵列大小可以是数千,而不是数百万.

有没有更有效的方法来执行此操作?

请注意,数组A包含重复值,需要将它们考虑在内.我无法使用集合交集,因为取交点将省略重复值,仅返回[1,9].

另请注意,这只是一个简单的演示.实际的阵列大小可以是数千,而不是数百万.

有没有更有效的方法来执行此操作?

请注意,数组A包含重复值,需要将它们考虑在内.我无法使用集合交集,因为取交点将省略重复值,仅返回[1,9].

另请注意,这只是一个简单的演示.实际的阵列大小可以是数千,而不是数百万.

>>> A[np.in1d(A,B)]
array([4,9])@H_419_3@ 
 

np.in1d返回一个布尔数组,指示A的每个值是否也出现在B.这个数组然后可用于索引A并返回公共值.

它与你的例子无关,但是值得一提的是,如果A和B都包含唯一值,那么可以通过设置assume_unique = True来加速np.in1d:

np.in1d(A,B,assume_unique=True)@H_419_3@ 
 

您可能还对np.intersect1d感兴趣,它返回两个数组共有的唯一值数组(按值排序):

>>> np.intersect1d(A,B)
array([1,9])@H_419_3@
np.in1d(A,B,assume_unique=True)@H_419_3@ 
 

您可能还对np.intersect1d感兴趣,它返回两个数组共有的唯一值数组(按值排序):

>>> np.intersect1d(A,B)
array([1,9])@H_419_3@
>>> np.intersect1d(A,B)
array([1,9])@H_419_3@

np.in1d返回一个布尔数组,指示A的每个值是否也出现在B.这个数组然后可用于索引A并返回公共值.

它与你的例子无关,但是值得一提的是,如果A和B都包含唯一值,那么可以通过设置assume_unique = True来加速np.in1d:

您可能还对np.intersect1d感兴趣,它返回两个数组共有的唯一值数组(按值排序):

np.in1d返回一个布尔数组,指示A的每个值是否也出现在B.这个数组然后可用于索引A并返回公共值.

它与你的例子无关,但是值得一提的是,如果A和B都包含唯一值,那么可以通过设置assume_unique = True来加速np.in1d:

np.in1d(A,B,assume_unique=True)@H_419_3@ 
 

您可能还对np.intersect1d感兴趣,它返回两个数组共有的唯一值数组(按值排序):

>>> np.intersect1d(A,B)
array([1,9])@H_419_3@
>>> np.intersect1d(A,B)
array([1,9])@H_419_3@

您可能还对np.intersect1d感兴趣,它返回两个数组共有的唯一值数组(按值排序):

您可能还对np.intersect1d感兴趣,它返回两个数组共有的唯一值数组(按值排序):

>>> np.intersect1d(A,B)
array([1,9])@H_419_3@


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶