首页 > 解决方案 > 在 julia 中将 Expr 转换为数组

问题描述

我有一个Expr

:([4.01673077 7.62137432 8.74459436 10.14775067 12.57379884 14.39781963; 17.00925227 19.2273262])

我希望将其转换为 Vector{Float64},但eval直接调用它似乎不起作用。

我怎样才能做到这一点?

标签: juliametaprogramming

解决方案


您可以从中提取数据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

您的矩阵格式错误,因此只有第一个解决方案可以使用它。


推荐阅读