python C 计算两个numpy数组之间相交值的有效方法
发布时间:2023-12-21 21:30:12 所属栏目:Python 来源:DaWei
导读: 我的程序中存在瓶颈,原因如下:
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])
C的预期结果如下:
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])
C的预期结果如下:
我的程序中存在瓶颈,原因如下: 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]) C的预期结果如下: C = [4 6 7 1 5 4 1 1 9]有没有更有效的方法来执行此操作? 请注意,数组A包含重复值,需要将它们考虑在内.我无法使用集合交集,因为取交点将省略重复值,仅返回[1,9]. 另请注意,这只是一个简单的演示.实际的阵列大小可以是数千,而不是数百万. 解决方法 你可以使用 np.in1d: >>> A[np.in1d(A,B)] array([4,9])np.in1d返回一个布尔数组,指示A的每个值是否也出现在B.这个数组然后可用于索引A并返回公共值. 它与你的例子无关,但是值得一提的是,如果A和B都包含唯一值,那么可以通过设置assume_unique = True来加速np.in1d: np.in1d(A,B,assume_unique=True)您可能还对np.intersect1d感兴趣,它返回两个数组共有的唯一值数组(按值排序): >>> np.intersect1d(A,B) array([1,9])(编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Python Django:在视图中,最好是为对象添加属性还是创建数据
- python C tkinter中的标签宽度
- 在python中使用ElementTree将xml元素作为第一个子元素插入
- python-2.7 – Sphinx的LaTeX错误:找不到文件`titlesec.st
- 如何在两个元组列表中的值
- 从python安装脚本中的编译标志中删除ppc
- python – 整数除法:对于所有整数a,b,// b == int(a / b)为
- python – 逐行文件处理,for-loop vs with
- python – Django模板将模板变量传递到剪切过滤器
- python C Pip默认行为与virtualenv冲突?
推荐文章
站长推荐