我正在测试模拟的输出,看它是否在某个时刻进入循环,所以我需要知道输出是否重复.例如,可能有400个数字,然后是400000个数字周期.输出仅包含0-9的数字.我有以下正则函数,我用来匹配单个长字符串中的重复:
def repetitions(s):
r = re.compile(r"(.+?)\1+")
for match in r.finditer(s):
if len(match.group(1)) > 1 and len(match.group(0))/len(match.group(1)) > 4:
yield (match.group(1), len(match.group(0))/len(match.group(1)))
Run Code Online (Sandbox Code Playgroud)
这个功能非常有效,但需要太长时间.我最近的测试是400万位,搜索需要4.5小时.它没有发现重复,所以我现在需要增加搜索空间.代码只关注自身重复次数超过4次的子序列,因为我正在考虑重复5次以给出一个可以手动检查的集合:模拟将生成将重复数百次的子序列.我正在四核机器上运行,要检查的数字是实时生成的.如何提高搜索速度?
我在Python中有一个二进制数组:
data = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1...]
Run Code Online (Sandbox Code Playgroud)
我想取出这些数据并将其保存为位图,其中"0"对应于白色,"1"对应于黑色.我知道数组中有2500个数字,对应于50x50位图.我已经下载并安装了PIL,但我不确定如何将它用于此目的.如何将此数组转换为相应的图像?