【问题标题】:How to save an NxNxN array (or Matrix) into a file in Julia (or Python)?如何将 NxNxN 数组(或矩阵)保存到 Julia(或 Python)中的文件中?
【发布时间】:2015-09-04 17:21:03
【问题描述】:

我正在使用 Jupyter 笔记本,目前正在使用 Julia

我正在尝试将 3x3x3 数组保存到文本文件中,因此当我将其包含在另一个笔记本中时,该数组也是 3x3x3 数组。

有什么建议吗? 提前致谢。

【问题讨论】:

  • 您需要纯文本格式吗?如果没有,您可能需要查看 HDF5.jl 包。
  • 您可以使用writecsv/readcsv 保存值,但不能使用尺寸或类型(整数将被解析为浮点数)。不知道你是否介意铸造和重塑。 convert(Array{Int64}, reshape( readcsv("vals"), 3, 3, 3))
  • 我使用的是writecsv,但正如你所说,它没有保存尺寸或类型。我查看了 HDF5.jl 包,这正是我想要的。谢谢!

标签: multidimensional-array save julia


【解决方案1】:

您可以使用JLD.jl(Julia 数据)包:

using Pkg
Pkg.add("JLD")
using JLD
r = rand(3, 3, 3)
save("data.jld", "data", r)
load("data.jld")["data"]

JLD 包的优点是它保留了每个变量的准确类型信息。

【讨论】:

  • 别忘了Pkg.add("JLD")
  • 文件保存在哪里?我可以更改它的保存目录吗?
【解决方案2】:

好吧,我承认我是一个蟒蛇爱好者,尽管 Julia 开始在我身上长大。因此,作为一个老 python 用户,有一个 Julia 包可以将数组转换为 numpy npz 文件,然后也可以读取它们。示例:

    x = reshape(1:27, 3,3,3)
    Pkg.add("NPZ")
    using NPZ
    npzwrite("TEST.npz",x)

现在我可以稍后加载这个文件(只要我使用的是 NPZ 包):

    y = npzread("TEST.npz")

【讨论】:

  • 谢谢!我最终使用 HDF5.jl 包来存储我的数组,因为它保存了尺寸和类型。我相信它与 NPZ 几乎相同,但 HDF5 具有适当的 Julia 数据扩展名 (.jld),因此对我来说效果更好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
相关资源
最近更新 更多