2015-06-18 66 views
7

我工作的一个Jupyter笔记本电脑和目前使用朱莉娅如何在Julia(或Python)中将NxNxN数组(或Matrix)保存到文件中?

我想一个3x3x3的数组保存到文本文件里,所以当我包括它在另一个笔记本,该阵列是一个3x3x3的数组了。

有什么建议吗? 在此先感谢。

+5

你需要它在纯文本?如果没有,你可能想看看HDF5.jl包。 – spencerlyon2

+1

您可以使用'writecsv' /'readcsv'保存值,但不保存维或类型(整数将被解析为浮点)。不知道你是否介意铸造和重塑。 'convert(Array {Int64},reshape(readcsv(“vals”),3,3,3))' –

+2

我正在使用'writecsv',但正如你所说的,它没有保存尺寸或类型。我查看了HDF5.jl包,这正是我所需要的。谢谢! –

回答

8

您可以使用JLD.jl(朱莉娅数据)包:

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

的JLD封装的优点在于,它保留了确切的每个变量的类型信息。

+1

不要忘记''Pkg.add(“JLD”)'' – jjjjjj

+1

@jjjjjj我已更新答案,谢谢! – SalchiPapa

3

好吧我承认我是一个蟒蛇爱好者,尽管朱莉娅开始在我身上成长。所以作为一个老的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") 
+1

谢谢!我最终使用HDF5.jl包来存储我的数组,因为它可以节省维度和类型。我相信它几乎与NPZ相同,但HDF5有一个适当的Julia数据扩展名(.jld),所以它对我更好 –

相关问题