gpt4 book ai didi

python - 我如何通过 numpy 从大数组中搜索数组

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:16 25 4
gpt4 key购买 nike

我从 numpy 开始!numpy 是否有某个函数可以从另一个数组中搜索一个数组,并返回相似的数组?谢谢!

import numpy as np

def searchBinA(B = ['04','22'],A):
result = []
?......? numpy.search(B,A)? "is this correct?"
return result

A = [['03', '04', '18', '22', '25', '29','30'], ['02', '04', '07', '09', '14', '29','30'], \
['06', '08', '11', '13', '17', '19','30'], ['04', '08', '22', '23', '27', '29','30'], \
['03', '05', '15', '22', '24', '25','30']]

print(str(searchBinA()))


output:[['03', '04', '18', '22', '25', '29','30'], ['04', '08', '22', '23', '27', '29','30']]

最佳答案

假设输入是 NumPy 数组,并且 A 的每一行中没有重复项,这里有一种使用 np.in1d 的方法-

A[np.in1d(A,B).reshape(A.shape).sum(1) == len(B)]

说明-

  1. 使用 np.in1d(A,B) 获取 A 中与 B 中任何元素的匹配掩码。请注意,这将是一个一维 bool 数组。

  2. 将从 np.in1d(A,B) 获得的 bool 数组 reshape 为 A 形状,然后查找具有 n 的行code> 匹配每一行,其中 nB 中的元素数量。由于每行中都有唯一的元素,因此具有 n 匹配的行就是我们在最终输出中想要的行。

  3. 因此,沿行对 2D 重构 bool 数组求和,并与 n 进行比较,得到一个 bool 掩码,当索引到 A 时,它会给我们选择性的其中的行作为所需的输出。

示例运行 -

In [23]: A
Out[23]:
array([['03', '04', '18', '22', '25', '29', '30'],
['02', '04', '07', '09', '14', '29', '30'],
['06', '08', '11', '13', '17', '19', '30'],
['04', '08', '22', '23', '27', '29', '30'],
['03', '05', '15', '22', '24', '25', '30']],
dtype='|S2')

In [24]: B
Out[24]:
array(['04', '22'],
dtype='|S2')

In [25]: A[np.in1d(A,B).reshape(A.shape).sum(1) == len(B)]
Out[25]:
array([['03', '04', '18', '22', '25', '29', '30'],
['04', '08', '22', '23', '27', '29', '30']],
dtype='|S2')

关于python - 我如何通过 numpy 从大数组中搜索数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35668472/

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