【发布时间】:2017-04-13 13:37:39
【问题描述】:
我正在尝试连接许多numpy数组,我将每个数组放在一个文件中,实际上我有很多文件的问题,内存无法支持创建一个大数组Data_Array = np.zeros((1000000,7000)),我将放在哪里我所有的文件。所以,我在这个问题Combining NumPy arrays 中发现我可以使用np.concatenate:
file1= np.load('file1_Path.npy')
file2= np.load('file2_Path.npy')
file3= np.load('file3_Path.npy')
file4= np.load('file4_Path.npy')
dataArray=np.concatenate((file1, file2, file3, file4), axis=0)
test= dataArray.shape
print(test)
print (dataArray)
print (dataArray.shape)
plt.plot(dataArray.T)
plt.show()
这种方式给了我一个很好的结果,但是现在,我需要将file1, file2, file3, file4替换为我的文件文件夹的路径:
import matplotlib.pyplot as plt
import numpy as np
import glob
import os, sys
fpath ="Path_To_Big_File"
npyfilespath =r'Path_To_Many_Numpy_Files'
os.chdir(npyfilespath)
npfiles= glob.glob("*.npy")
npfiles.sort()
for i,npfile in enumerate(npfiles):
dataArray=np.concatenate(npfile, axis=0)
np.save(fpath, all_arrays)
它给了我这个错误:
np.concatenate(npfile, axis=0)
ValueError: zero-dimensional arrays cannot be concatenated
你能帮我使这个方法np.concatenate 有效吗?
【问题讨论】:
-
您是否尝试过保存和读取 HDF5 文件中的数据?它支持分片流式传输数据
-
@NilsWerne,非常感谢您的回答,但我不尝试 HDF5 文件,因为我的目标是拥有一个包含我所有文件的大 numpy 文件,这个文件将帮助我进行可能的分析。
-
如果您添加某种“真实测试”,例如
if npfile: np.concatenate(npfile, axis=0)... 也就是说,if npfile is not None... 你也可以使用 try-except 块来跳过ValueErrors。 -
等一下...您正在尝试连接
i,这是npfiles列表的索引;不是实际的文件本身。 -
@not_a_robot 对不起,这是一个错误,我纠正它