我循环遍历一个非常大的数据帧(11361x22679),并使用pyplot将每行的值转换为一个像素图像。所以最后我应该有11361个图像,有151 x 151像素(我在最后加上0,使其成为正方形)。 allDF是33个数据帧的列表,对应于图像需要保存到的新文件名中的33个子目录。你知道吗
我尝试在每次迭代结束时删除每个数据帧和图像。 我试过把浮点值转换成int。 我试过了gc.收集()在每次迭代结束时(尽管我知道这是多余的) 我已经采取措施,不存储任何附加值,总是引用原始数据。你知道吗
唯一有用的是我一次处理一帧。它仍然会变慢,但因为迭代次数较少,所以速度没有那么慢。所以,我认为内部循环或其中一个函数是问题所在。你知道吗
def shape_pixels(imglist):
for i in range(122):
imglist.append(0.0)
imgarr = np.array(imglist).reshape((151,151))
imgarr.reshape((151,151))
return imgarr
def create_rbg_image(subpath,imgarr,imgname):
# create/save image
img = plt.imshow(imgarr, cmap=rgbmap)
plt.axis('off')
plt.savefig(dirpath+subpath+imgname,
transparent=True,
bbox_inches=0,pad_inches=0)
for i in range(len(allDF)):
for j in range(len(allDF[i])):
fname = allDF[i]['File Name'].iloc[j][0:36]
newlist = allDF[i].iloc[j][1:].tolist()
newarr = shape_pixels(allDF[i].iloc[j][1:].tolist())
create_rbg_image(newFileNames[i]+'\\',shape_pixels(allDF[i].iloc[j][1:].tolist()),allDF[i]['File Name'].iloc[j][0:36])
我希望能够为整个数据集运行代码,并在完成后返回到它,但我运行了一夜,只完成了不到1/3的工作。如果它继续慢下来,我永远也做不完。 第一分钟生成150多个图像,第二分钟生成80个图像。然后是48、32、27等等。。最终只需要几分钟就可以创建一个。你知道吗
我不知道
你知道吗绘图。关闭('all')有很大帮助,但我改用PIL和hexadec值,这样效率更高,我能在不到20分钟内生成所有11k+图像
相关问题 更多 >
编程相关推荐