我有一个“any”类型的矩阵(rand2),我想将该类型转换为浮点数。我有以下代码。
\nfor i in 1:size(rand2,1)\n rand2[i,:]=convert(Array{Float64,1}, rand2[i,:])\nend\nRun Code Online (Sandbox Code Playgroud)\n此类代码不会更改数据类型。这里的问题是什么\xe2\x80\x98?
\n使用点运算符对类型转换进行向量化。
\n假设你有
\njulia> m = Matrix{Any}(rand(2,2))\n2\xc3\x972 Matrix{Any}:\n 0.250737 0.0366769\n 0.240182 0.883665\nRun Code Online (Sandbox Code Playgroud)\n比你能做的
\njulia> Float64.(m)\n2\xc3\x972 Matrix{Float64}:\n 0.250737 0.0366769\n 0.240182 0.883665\nRun Code Online (Sandbox Code Playgroud)\n或者你可以明确地调用向量化convert:
julia> convert.(Float64, m)\n2\xc3\x972 Matrix{Float64}:\n 0.250737 0.0366769\n 0.240182 0.883665\nRun Code Online (Sandbox Code Playgroud)\n
Julia 数组一旦创建,就不能更改其类型;这是高性能所必需的。因此,尝试中途更改类型是行不通的。您必须创建一个与原始数组类似但具有新类型的新数组。
你可以这样做:
m64 = similar(m, Float64)
m64 .= m
Run Code Online (Sandbox Code Playgroud)
这将比直接转换(如Float64.(m).