pandas 我怎样才能保存一个我以前创建的非常耗时的数组,这样我就可以重用它而不需要再次运行代码行?

68bkxrlz  于 2023-01-24  发布在  其他
关注(0)|答案(2)|浏览(187)

这行代码从一个PDF中提取第667-795页的所有表格,并将它们保存到一个充满表格的数组中。

tablesSys = cam.read_pdf("840Dsl_sysvar_lists_man_0122_de-DE_wichtig.pdf",
                         pages = "667-795", 
                         process_threads = 100000, 
                         line_scale = 100, 
                         strip_text ='.\n'
                        ) 

tablesSys = np.array(tablesSys)

数组看起来像这样。

以后我不得不多次使用这个数组。
现在我在jupyter实验室工作,每当我的内核离线,或者几个小时后我重新开始工作,或者当我重新启动内核等,我必须调用这行代码来获取我的tablesys,这需要超过11分钟的时间来加载。
既然pdf文件一点都没有改变,我想我可以找到一种方法,只加载一次代码,然后保存数组,这样以后我就可以不用加载代码就可以使用数组了。
希望能找到解决办法:)))

mv1qrgav

mv1qrgav1#

尝试使用pickle格式将pickle文件保存到文件系统https://docs.python.org/3/library/pickle.html
这里有一个高级示例,我没有运行这段代码,但它应该给予你一个想法。

import pickle

import numpy as np

# calculate the huge data slice
heavy_numpy_array = np.zeros((1000,2)) # some data

# decide where to store the data in the file-system
my_filename = 'path/to/my_file.xyz'
my_file = open(my_filename, 'wb')

# save to file
pickle.dump(heavy_numpy_array, my_file)
my_file.close()

# load the data from file
my_file_v2 = open(my_filename, 'wb')
my_long_numpy_array = pickle.load(my_file_v2)
my_file_v2.close()
lvjbypge

lvjbypge2#

在玩耍

import numpy as np

class Cam:
    def read_pdf(self, *args, **kwargs):
        return np.random.rand(3, 2)

cam = Cam()

tablesSys = cam.read_pdf(
    "840Dsl_sysvar_lists_man_0122_de-DE_wichtig.pdf",
    pages="667-795",
    process_threads=100000,
    line_scale=100,
    strip_text=".\n",
)

with open("data.npy", "wb") as f:
    np.save(f, tablesSys)

with open("data.npy", "rb") as f:
    tablesSys = np.load(f)
print(tablesSys)

相关问题