在Julia中解析2D数组

时间:2017-06-02 21:14:39

标签: julia

在朱莉娅,我可以使用

创建2D数组
[1 2 3 4 ; 5 6 7 8]
2×4 Array{Int64,2}:
1  2  3  4
5  6  7  8

问题是,我需要将作为参数提供的2D数组解析为脚本 - 即作为String。

例如

$ julia script.jl "[1 2 3 4 ; 5 6 7 8]"

并在脚本中写道:

c = parse.(ARGS[1])

和c应为2×4阵列。

我对输入字符串的格式很灵活。

用例是,我想从Java中调用在Julia + JuMP中实现的优化问题。

1 个答案:

答案 0 :(得分:4)

查看readdlm功能:

retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .build();

运行:

println(ARGS)
a = readdlm(IOBuffer(ARGS[1]),',',';')
display(a)

您可以在脚本中选择类型:

$ julia argscript.jl "1,2,3,4;5,6,7,8"
String["1,2,3,4;5,6,7,8"]
2×4 Array{Float64,2}:
 1.0  2.0  3.0  4.0
 5.0  6.0  7.0  8.0

您甚至可以通过传递两个参数来强制执行矩阵维度:

a = readdlm(IOBuffer(ARGS[1]),',',Int,';')

运行:

n = parse(Int,ARGS[1])
m = parse(Int,ARGS[2])
a = readdlm(IOBuffer(ARGS[3]),',',Int,';',dims=(n,m))