【发布时间】:2021-07-20 12:34:27
【问题描述】:
我有一个Expr
:([4.01673077 7.62137432 8.74459436 10.14775067 12.57379884 14.39781963; 17.00925227 19.2273262])
我希望将其转换为 Vector{Float64},但在此直接调用 eval 似乎不起作用。
我该怎么做?
【问题讨论】:
标签: julia metaprogramming
我有一个Expr
:([4.01673077 7.62137432 8.74459436 10.14775067 12.57379884 14.39781963; 17.00925227 19.2273262])
我希望将其转换为 Vector{Float64},但在此直接调用 eval 似乎不起作用。
我该怎么做?
【问题讨论】:
标签: julia metaprogramming
您可以从Expr(更快、更安全)或仅从eval(更慢、不安全、更简单的代码)中提取数据。
julia> a = :([12.57379884 14.39781963; 17.00925227 19.2273262])
:([12.57379884 14.39781963; 17.00925227 19.2273262])
julia> [Float64.(vals) for vals in getfield.(a.args, :args)]
2-element Vector{Vector{Float64}}:
[12.57379884, 14.39781963]
[17.00925227, 19.2273262]
julia> eval(a)
2×2 Matrix{Float64}:
12.5738 14.3978
17.0093 19.2273
您的矩阵格式错误,因此只有第一个解决方案可以使用它。
【讨论】: