我有一个庞大的数据集,它分为k个小型数据集,其中k = 100。我想将这些小型数据集存储在不同的文件中。为了存储我的海量数据集,我使用了以下指令:
using JLD, HDF5
X=rand(100000)
file = jldopen("path to my file/mydata.jld", "w") # the extension of file is jld so you should add packages JLD and HDF5, Pkg.add("JLD"), Pkg.add("HDF5"),
write(file, "X", X) # alternatively, say "@write file A"
close(file)
Run Code Online (Sandbox Code Playgroud)
知道l将我的数据集分为k个子数据集,其中k = 100
function get_mini_batch(X)
mini_batches = round(Int, ceil(X / 100))
for i=1:mini_batches
mini_batch = X[((i-1)*100 + 1):min(i*100, end)]
file= jldopen("/path to my file/mydata.jld", "w")
write(file, "mini_batch", mini_batch) # alternatively, say "@write file mini_batch"
lose(file)
end
end
Run Code Online (Sandbox Code Playgroud)
但是此功能允许将不同的子数据集存储在一个文件中,该文件在每次迭代时都会被覆盖。
file= jldopen("/path to my file/mydata1.jld", "w") # at each iteration l want to get files : mydata1, mydata2 ... mydata100
file= jldopen("/path to my file/mydata2.jld", "w")
file= jldopen("/path to my file/mydata3.jld", "w")
file= jldopen("/path to my file/mydata4.jld", "w")
.
.
.
file= jldopen("/path to my file/mydata100.jld", "w")
Run Code Online (Sandbox Code Playgroud)
或者,我尝试了此过程函数get_mini_batch(X)
mini_batches = round(Int, ceil(X / 100))
for i=1:mini_batches
mini_batch[i] = X[((i-1)*100 + 1):min(i*100, end)]
file[i]= jldopen("/path to my file/mydata.jld", "w")
write(file, "mini_batch", mini_batch) # alternatively, say "@write file mini_batch"
lose(file)
end
end
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在此行代码文件中创建变量i = 1 .... 100 [i] = jldopen(“ /我的文件路径/ mydata(i).jld ”,“ w ”)
您正在寻找字符串格式。
要创建文件名,您可以使用@sprintf()。然后,您可以使用这些字符串将对象写入磁盘。
julia> using Printf # Needed in Julia 1.0.0
julia> @sprintf("myfilename%02.d.jld", 5)
"myfilename05.jld"
Run Code Online (Sandbox Code Playgroud)
循环示例:
julia> for i in 1:3
println(@sprintf("myfilename%03.d.jl", i))
end
myfilename001.jl
myfilename002.jl
myfilename003.jl
Run Code Online (Sandbox Code Playgroud)
我%03.d在这里显示了如何在文件名中添加前导零。这将在以后进行排序时有所帮助。