问题描述
当前,我正在创建.npz压缩文件以存储大型NumPy数组。因此,每当我需要从文件加载数组时,由于这是一个频繁的过程,因此我一直在考虑将NumPy数组存储在数据库中。我正在使用Postgresql数据库。
解决方法
您可以使用bytea列来执行此操作(它可以存储任意二进制)。您可以使用pickle.dumps将numpy数组转换为二进制字符串,然后根据需要将其插入postgres。然后,您可以选择该数据并使用pickle.loads取回阵列。这是一个类似问题的答案:https://stackoverflow.com/a/57644761/7386185
根据阵列的大小,您可能需要考虑某种类型的Blob存储,例如Amazon S3。
如果您经常访问此数据并且这是生产环境,则可能需要考虑将这些数据保留在内存中。如果阵列足够大,无法在内存中保留太长的时间,则应考虑您的应用程序是否允许批量或串流传输数据。