我从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']]
答案 0 :(得分:1)
假设输入是NumPy数组并且A
的每一行中没有重复项,那么使用np.in1d
的方法 -
A[np.in1d(A,B).reshape(A.shape).sum(1) == len(B)]
说明 -
使用A
获取B
中np.in1d(A,B)
中任何元素的np.in1d(A,B)
匹配的掩码。请注意,这将是一维布尔数组。
重塑从A's
到n
形状获取的布尔数组,然后查找每行n
匹配的行,其中B
是数字n
中的元素。由于每行中都有唯一的元素,因此n
匹配的行是我们在最终输出中需要的行。
因此,沿着行对2D重新整形的布尔数组求和,并与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')
时,会给出我们选择的行作为期望值输出
示例运行 -
print $q->header( -cookie=>$cookie );