程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python保存numpy數據中間結果到本地文件

編輯:Python

當我們保存一些數據的中間結果時,往往比較麻煩,這裡寫一個工具函數:

def get_data(mark: str = None, array: np.ndarray = None) -> np.ndarray:
"""用於記錄一些numpy的數據 傳遞一個mark用來標識數據含義,還有一份array的數據 如果mark代表的數據不存在,就保存array到本地文件中 如果mark代表的數據存在,就讀取對應的本地文件並返回 """
assert mark is not None
os.chdir(os.getcwd())
hash_file = hashlib.md5(mark.encode()).hexdigest() + ".pkl"
if os.path.exists(hash_file):
with open(hash_file, 'rb') as file:
array = pickle.load(file)
print('讀取本地文件')
else:
assert array is not None
with open(hash_file, 'wb') as file:
pickle.dump(array, file)
print('保存數據到本地文件')
return array

當我們使用mark表示一個數據時,會對mark字符串用MD5加密,得到加密後的字符串,然後以此為文件名:

  • 如果文件不存在,就保存array到這個文件中
  • 如果文件存在,就讀取文件內容並返回

示例代碼

import numpy as np
import pickle
import os
import hashlib
def get_data(mark: str = None, array: np.ndarray = None) -> np.ndarray:
"""用於記錄一些numpy的數據 傳遞一個mark用來標識數據含義,還有一份array的數據 如果mark代表的數據不存在,就保存array到本地文件中 如果mark代表的數據存在,就讀取對應的本地文件並返回 """
assert mark is not None
os.chdir(os.getcwd())
hash_file = hashlib.md5(mark.encode()).hexdigest() + ".pkl"
if os.path.exists(hash_file):
with open(hash_file, 'rb') as file:
array = pickle.load(file)
print('讀取本地文件')
else:
assert array is not None
with open(hash_file, 'wb') as file:
pickle.dump(array, file)
print('保存數據到本地文件')
return array
def main():
array = np.array(np.random.random(size=(4, 5, 6, 7)))
hash_value = get_data(mark="數據標識", array=array)
if __name__ == '__main__':
main()

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved