将多个1D numpy浮点数组存储和表示为一个1D numpy数组的最佳方法

2024-04-28 12:19:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将.bed文件转换为1D numpy float数组。稍后,我将需要这个1D numpy浮点数组。对于大约700个.bed文件,将它们保存在1D numpy数组中非常昂贵

我的解决方案是将它们转换成字符串数组并连续连接起来,以便以后可以按连接顺序检索它们。如下图所示获取最后一个数组

import numpy as np

array_size=10000
number_of_files=700

sample1 = np.random.uniform(low=0.5, high=13.3, size=(1,array_size))
s1 = np.array(["%.2f" % x for x in sample1.reshape(sample1.size)])
np.save('test',s1)

for i in range(number_of_files):
 sample = np.random.uniform(low=0.5, high=13.3, size=(1,array_size))
 s = np.array(["%.2f" % x for x in sample.reshape(sample.size)]) 
 s_temp=np.load('test.npy',mmap_mode='r')   
 s_new=['%s_%s' %(x,y) for x,y in zip(s_temp,s)]
 np.save('test',s_new) 

result=np.load('test.npy')
last=[x.split('_')[100] for x in result]

但是,我的测试代码显示,这个字符串数组的开销要大得多。 存储250M大小的1D numpy float的成本为1.9gb。 700个文件就能赚1330克

存储10K大小的1D numpy字符串数组需要143MB。 (250M/10K)*143MB将产生3575GB

对于这个表示和以后的检索问题,您有更好的解决方案吗


Tags: 文件sample字符串intestnumpyforsize