【发布时间】:2018-07-18 09:09:55
【问题描述】:
我有一个数据集需要输出布尔样式数据,只有 1 和 0,用于判断真或假。我正在尝试解析我处理过的简单数据集,以在 numpy 数组中查找信息子集,该数组在一个方向上大约有 100,000 个元素,在另一个方向上大约有 20 个元素。我只需要沿 20 轴搜索,但我需要对 100,000 个条目中的每一个都执行此操作并获得可以映射的输出。
我已经生成了一个由零组成的这种大小的数组,目的是将匹配的索引指示器简单地标记为 1。一个主要问题是,如果我找到一个长集(我正在使用长集到小集合),我不需要在其中包含任何较小的集合。
示例: [0,0,1,1,1,1,1,0,0,1,1,1,0,0,0,1,0,1]
我需要在这里找到 1 个 5 组,从索引 2 开始,1 个 3 组,从索引 9 开始,并且不返回 5 组的任何子集,就好像它是 4 组一样或一组 3 个,从而为所有已涵盖的值留下结果。即对于 3 组,索引 2、3、4、5 和 6 都将保持为零。不需要太高效,不管它是否搜索,我只需要不保留结果。
目前我正在使用基本上像这样的代码块进行简单搜索:
values = numpy.array([0,1,1,1,1,1,0,0,1,1,1])
searchval = [1,2]
N = len(searchval)
possibles = numpy.where(values == searchval[0])[0]
print(possibles)
solns = []
for p in possibles:
check = values[p:p+N]
if numpy.all(check == searchval):
solns.append(p)
print(solns)
我一直在绞尽脑汁试图想出一种方法来重组此代码或类似代码以产生欲望结果。最终目标是搜索从 9 到 3 的组,并有效地使用 1 和 0 的矩阵来指示索引是否有一个从它开始的组,只要我们想要。
希望有人可以指出我缺少什么来完成这项工作。谢谢!
【问题讨论】:
标签: python arrays list numpy matching