我有一个庞大的数据集,我把它划分成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)
我把我的数据集分成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
但是该函数允许将不同的子数据集存储在一个文件中,该文件在每次迭代时都会被覆盖。
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")
或者,我尝试了这个过程函数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
但是我不知道如何在这行代码file/mydata(i).jld",jldopen("/path to my i=1....100 "w")中创建变量i=1....100。
发布于 2016-06-24 04:06:49
你在找字符串格式。
要创建文件名,可以使用@sprintf()
。然后,您可以使用这些字符串将对象写入磁盘。
julia> using Printf # Needed in Julia 1.0.0
julia> @sprintf("myfilename%02.d.jld", 5)
"myfilename05.jld"
循环中的示例:
julia> for i in 1:3
println(@sprintf("myfilename%03.d.jl", i))
end
myfilename001.jl
myfilename002.jl
myfilename003.jl
我在这里使用%03.d
来演示如何在文件名中添加前导零。这在以后的分类中会有所帮助。
发布于 2016-06-24 05:25:54
我同意niczky12的观点,即您正在寻找字符串格式。但我会用另一种方式来写:
"/path to my file/mydata$i.jld"
而不是使用sprintf
。
示例:
julia> i = 4
4
julia> "/path/mydata$i.jld"
"/path/mydata4.jld"
https://stackoverflow.com/questions/38012858
复制相似问题