我知道可以将 Float64
转换为 Int64
使用convert
函数。
不幸的是,当将 convert
应用于二维数组时,它不起作用。
julia> convert(Int64, 2.0)
2
julia> A = [1.0 2.0; 3.0 4.0]
2x2 Array{Float64,2}:
1.0 2.0
3.0 4.0
julia> convert(Int64, A)
ERROR: `convert` has no method matching convert(::Type{Int64}, ::Array{Float64,2
})
in convert at base.jl:13
如何将二维 float 数组转换为二维整数数组?
我尝试过的
我可以使用以下代码来做到这一点, 这有点冗长,但它有效。 我希望有一种更简单的方法来做到这一点。
julia> A = [1.0 2.0; 3.0 4.0]
2x2 Array{Float64,2}:
1.0 2.0
3.0 4.0
julia> B = Array(Int64, 2, 2)
2x2 Array{Int64,2}:
4596199964293150115 4592706631984861405
4604419156384151675 0
julia> for i = 1:2
for j = 1:2
B[i,j] = convert(Int64,A[i,j])
end
end
julia> B
2x2 Array{Int64,2}:
1 2
3 4
一个对我不起作用的答案
_
_ _ _(_)_ | A fresh approach to technical computing
(_) | (_) (_) | Documentation: http://docs.julialang.org
_ _ _| |_ __ _ | Type "help()" for help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 0.3.10 (2015-06-24 13:54 UTC)
_/ |\__'_|_|_|\__'_| | Official http://julialang.org release
|__/ | x86_64-linux-gnu
julia> A = [1.2 3.4; 5.6 7.8]
2x2 Array{Float64,2}:
1.2 3.4
5.6 7.8
julia> round(Int64, A)
ERROR: `round` has no method matching round(::Type{Int64}, ::Array{Float64,2})
最佳答案
在决定如何处理舍入后,您可以非常轻松地将 2x2 float 数组转换为 2x2 整数数组:
julia> A = [1.0 -0.3; 3.9 4.5]
2x2 Array{Float64,2}:
1.0 -0.3
3.9 4.5
julia> round.(Int, A)
2x2 Array{Int64,2}:
1 0
4 4
julia> floor.(Int, A)
2x2 Array{Int64,2}:
1 -1
3 4
julia> trunc.(Int, A)
2x2 Array{Int64,2}:
1 0
3 4
julia> ceil.(Int, A)
2x2 Array{Int64,2}:
1 0
4 5
关于arrays - 在 Julia 中将浮点二维数组转换为整数二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31550045/