如何在 Julia 中将矩阵漂亮地打印到字符串?

Ale*_*hin 6 julia

如何使用show漂亮的打印矩阵到字符串?

这是可能的打印到stdoutshow(stdout, "text/plain", rand(3, 3))

我正在寻找类似的东西 str = show("text/plain", rand(3, 3))

Prz*_*fel 8

对于简单的转换,通常DelimitedFiles是您最好的朋友。

julia> a = rand(2,3);

julia> using DelimitedFiles

julia> writedlm(stdout, a)
0.7609054249392935      0.5417287267974711      0.9044189728674543
0.8042343804934786      0.8206460267786213      0.43575947315522123
Run Code Online (Sandbox Code Playgroud)

如果要捕获输出,请使用缓冲区:

julia> b=IOBuffer();

julia> writedlm(b, a)

julia> s = String(take!(b))
"0.7609054249392935\t0.5417287267974711\t0.9044189728674543\n0.8042343804934786\t0.8206460267786213\t0.43575947315522123\n"
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要的一点是,如果您想使用更强大的控制CSV- 并且模式是相同的 - 使用stdout或使用缓冲区捕获输出,例如:

julia> using CSV, Tables

julia> b=IOBuffer();

julia> CSV.write(b, Tables.table(a));

julia> s = String(take!(b))
"Column1,Column2,Column3\n0.7609054249392935,0.5417287267974711,0.9044189728674543\n0.8042343804934786,0.8206460267786213,0.43575947315522123\n"
Run Code Online (Sandbox Code Playgroud)

甚至更多 - 如果您想捕获输出display- 您也可以!

julia> b=IOBuffer();

julia> t = TextDisplay(b);

julia> display(t,a);

julia> s = String(take!(b))
"2×3 Array{Float64,2}:\n 0.760905  0.541729  0.904419\n 0.804234  0.820646  0.435759"
Run Code Online (Sandbox Code Playgroud)