[英]How do I change the data type of a Julia array from “Any” to “Float64”?
Julia中是否有一个函数返回所需类型的数组副本,即numpys astype函数的等价物? 我有一个“任何”类型的数组,并希望将其转换为Float数组。 我试过了:
new_array = Float64(array)
但是我收到以下错误
LoadError: MethodError: `convert` has no method matching
convert(::Type{Float64}, ::Array{Any,2})
This may have arisen from a call to the constructor Float64(...),
since type constructors fall back to convert methods.
Closest candidates are:
call{T}(::Type{T}, ::Any)
convert(::Type{Float64}, !Matched::Int8)
convert(::Type{Float64}, !Matched::Int16)
...
while loading In[140], in expression starting on line 1
in call at essentials.jl:56
我可以编写一个遍历数组的函数并返回每个元素的浮点值,但如果没有内置方法可以做到这一点,我觉得有点奇怪。
使用convert
。 注意我用于第一个数组的语法; 如果在创建数组之前知道了什么,可以在方括号前面声明类型。 Any
容易被Float64
取代的Float64
都可以轻松取消convert
功能。
julia> a = Any[1.2, 3, 7]
3-element Array{Any,1}:
1.2
3
7
julia> convert(Array{Float64,1}, a)
3-element Array{Float64,1}:
1.2
3.0
7.0
您可以使用:
new_array = Array{Float64}(array)
您也可以使用广播运营商.
:
a = Any[1.2, 3, 7]
Float64.(a)
丹尼尔和兰迪的答案是可靠的,我将在这里添加另一种方式,因为它可以使更复杂的迭代案例相对简洁。 话虽如此,它并不像其他答案那样有效,后者更具体地与转换/类型声明相关。 但由于语法可以很容易地扩展到其他用例,因此值得添加:
a = Array{Any,1}(rand(1000))
f = [float(a[i]) for i = 1:size(a,1)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.