gpt4 book ai didi

python - 检查一个 numpy 数组中有多少个 numpy 数组与另一个不同大小的 numpy 数组中的其他 numpy 数组相等

转载 作者:太空狗 更新时间:2023-10-30 00:53:33 34 4
gpt4 key购买 nike

我的问题

假设我有

a = np.array([ np.array([1,2]), np.array([3,4]), np.array([5,6]), np.array([7,8]), np.array([9,10])])
b = np.array([ np.array([5,6]), np.array([1,2]), np.array([3,192])])

它们是两个数组,大小不同,包含其他数组(内部数组大小相同!)

我想计算 b 中有多少项(即内部数组)也在 a 中。请注意,我没有考虑他们的立场!

我该怎么做?

我的尝试

count = 0
for bitem in b:
for aitem in a:
if aitem==bitem:
count+=1

有没有更好的方法?尤其是在一行中,也许有一些理解..

最佳答案

numpy_indexed包包含针对这些类型问题的高效(通常为 nlogn)和矢量化解决方案:

import numpy_indexed as npi
count = len(npi.intersection(a, b))

请注意,这与您的双循环略有不同,例如丢弃 a 和 b 中的重复条目。如果你想在 b 中保留重复项,这会起作用:

count = npi.in_(b, a).sum()

a 中的重复条目也可以通过执行 npi.count(a) 并考虑其结果来处理;但无论如何,我只是为了说明目的而漫无目的,因为我认为这种区别对您来说可能并不重要。

关于python - 检查一个 numpy 数组中有多少个 numpy 数组与另一个不同大小的 numpy 数组中的其他 numpy 数组相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45936138/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com