julia - 在 julia 中将 Expr 转换为数组

标签 julia metaprogramming

我有一个表达式

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

我希望将其传输到 Vector{Float64} 中,但直接调用 eval 似乎不起作用。

我该怎么做?

最佳答案

您可以从 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

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

关于julia - 在 julia 中将 Expr 转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68454980/

相关文章:

c++ - 使用函数地址的模板类的唯一数字 ID

julia - 从 Julia 中的字典以编程方式创建局部变量

dataframe - 选择 Julia DataFrame 中缺少值的数字列

julia - 如何在登录 Julia 时捕获完整的堆栈跟踪

module - 如何在 Julia 中撤消 "using module"?

Ruby 元编程,RSpec 的 'should' 是如何工作的?

c++ - 为什么不能将constexpr函数传递给std::cout?

ruby - 为什么 eval 将方法创建为私有(private)方法?

julia - 如何删除 Julia 中的特定行

scala - 在宏扩展时生成函数