【问题标题】:How do you convert the string "Array{Float64,1}[1,2,3]" to an actual array in Julia?如何将字符串“Array{Float64,1}[1,2,3]”转换为 Julia 中的实际数组?
【发布时间】:2019-07-08 22:59:29
【问题描述】:

我基本上想取一个诸如“Array{Float64,1}[1,2,3]”之类的字符串,然后把它变成一个实际的数组:[1,2,3]

我已经尝试过 convert 函数,但是 julia 不喜欢将东西转换为数组。

convert(Array,x)

julia 拒绝了这个,说它不能将字符串转换成数组。

ERROR: MethodError: Cannot `convert` an object of type String to an object of type Array
Closest candidates are:
  convert(::Type{Array}, ::DataStructures.CircularBuffer{T}) where T at /Users/benjaminkhoury/.julia/packages/DataStructures/5F6tJ/src/circular_buffer.jl:172
  convert(::Type{T<:Array}, ::AbstractArray) where T<:Array at array.jl:474
  convert(::Type{T<:AbstractArray}, ::T<:AbstractArray) where T<:AbstractArray at abstractarray.jl:14
  ...
Stacktrace:
 [1] top-level scope at none:0

【问题讨论】:

    标签: type-conversion julia


    【解决方案1】:

    你想要做的是解析一个字符串。您可以使用Meta.parse 函数将字符串解析为表达式。然后您可以使用eval 来评估表达式:

    julia> ex = Meta.parse("[1., 2, 3]")
    :([1.0, 2, 3])
    
    julia> eval(ex)
    3-element Array{Float64,1}:
     1.0
     2.0
     3.0
    

    请注意,我修改了您的字符串,因为您的字符串中的表达式会引发错误:

    julia> Array{Float64,1}[1, 2, 3]
    ERROR: MethodError: Cannot `convert` an object of type Int64 to an object of type Array{Float64,1}
    

    引用文档(see here)

    可以使用语法 T[A, B, C, ...] 构造具有特定元素类型的数组。这将构造一个元素类型为 T 的一维数组,初始化为包含元素 A、B、C 等。

    所以Array{Float64,1}[[1, 2], [3, 4], [5, 6]] 有效但Array{Float64,1}[1, 2, 3] 无效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-31
      • 2016-08-16
      • 1970-01-01
      • 2014-12-28
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多