在 Julia 中将 any 的数据类型转换为矩阵中的浮点数

Jos*_*e G 4 julia

我有一个“any”类型的矩阵(rand2),我想将该类型转换为浮点数。我有以下代码。

\n
for i in 1:size(rand2,1)\n   rand2[i,:]=convert(Array{Float64,1}, rand2[i,:])\nend\n
Run Code Online (Sandbox Code Playgroud)\n

此类代码不会更改数据类型。这里的问题是什么\xe2\x80\x98?

\n

Prz*_*fel 6

使用点运算符对类型转换进行向量化。

\n

假设你有

\n
julia> m = Matrix{Any}(rand(2,2))\n2\xc3\x972 Matrix{Any}:\n 0.250737  0.0366769\n 0.240182  0.883665\n
Run Code Online (Sandbox Code Playgroud)\n

比你能做的

\n
julia> Float64.(m)\n2\xc3\x972 Matrix{Float64}:\n 0.250737  0.0366769\n 0.240182  0.883665\n
Run Code Online (Sandbox Code Playgroud)\n

或者你可以明确地调用向量化convert

\n
julia> convert.(Float64, m)\n2\xc3\x972 Matrix{Float64}:\n 0.250737  0.0366769\n 0.240182  0.883665\n
Run Code Online (Sandbox Code Playgroud)\n


Abo*_*mar 6

Julia 数组一旦创建,就不能更改其类型;这是高性能所必需的。因此,尝试中途更改类型是行不通的。您必须创建一个与原始数组类似但具有新类型的新数组。

你可以这样做:

m64 = similar(m, Float64)
m64 .= m
Run Code Online (Sandbox Code Playgroud)

这将比直接转换(如Float64.(m).