Сохраните данные в Julia

#save #julia #load

Вопрос:

Существует ли стандартный способ легко сохранять любые данные в Julia? На этот раз у меня есть кортеж с двумя массивами, который я хочу использовать позже. Что-то вроде этого.

 a = [1,2,34]
b = [1,2,3,4,5]

save((a,b), "ab")
a, b = load("ab")
 

Ответ №1:

Вы можете использовать JLD2.jl для сохранения и загрузки произвольных объектов Julia. Это, скорее всего, будет работать для долгосрочного хранения в разных версиях Julia, чем стандартная библиотека сериализации.

 using JLD2

x = (1, "a")
save_object("mytuple.jld2", x)
 
 julia> load_object("mytuple.jld2")
(1, "a")
 

Для получения дополнительной функциональности ознакомьтесь с документами.

Ответ №2:

Существует множество сценариев в зависимости от того, как долго вы хотите хранить данные

  1. Сериализация (это идеально подходит для коротких периодов времени, для более длительных периодов, когда пакеты обновляют свои внутренние структуры данных, у вас могут возникнуть проблемы с чтением файла)
 julia> using Serialization

julia> serialize("file.dat",a)
24

julia> deserialize("file.dat")
3-element Vector{Int64}:
  1
  2
 34
 
  1. Файлы с разделителями (обратите внимание, что может потребоваться дополнительная обработка выходных данных)
 julia> using DelimitedFiles

julia> writedlm("file.csv", a)

julia> readdlm("file.csv", 't' ,Int)
3×1 Matrix{Int64}:
  1
  2
 34
 
  1. JSON (отлично подходит для долгосрочной работы)
 julia> using JSON3

julia> JSON3.write("file.json",a)
"file.json"

julia> open("file.json") do f; JSON3.read(f,Vector{Int}); end
3-element Vector{Int64}:
  1
  2
 34
 

Другие заслуживающие упоминания библиотеки (в зависимости от формата данных) включают CSV.jl в себя для сохранения фреймов данных и BSON.jl для двоичных файлов JSON.