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

2024-01-31

我的问题

假设我有

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 中。请注意,我没有考虑他们的立场!

我怎样才能做到这一点?

My Try

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

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


The numpy_索引 https://github.com/EelcoHoogendoorn/Numpy_arraysetops_EP软件包包含针对这些类型问题的高效(通常为 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) 并考虑其结果来处理;但无论如何,我只是为了说明目的而漫无目的,因为我想这种区别可能对你来说并不重要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐