我是朱莉娅的新手。得到了这个InexactError。提到我已经尝试过将其转换为float,但它没有用,也许我做错了。
column = df[:, i]
max = maximum(column)
min = minimum(column)
scaled_column = (column .- min)/max # This is the error, I think
df[:, i] = scaled_column
julia> VERSION
v"1.4.2"
最佳答案
没有最小的工作示例,很难给出肯定的答案,但是通常,当您尝试将值转换为原始值不能正确转换的精确类型(如整数类型,但不同于浮点类型)时,会发生InexactError准确地表示出来。例如:
julia> convert(Int, 1.0)
1
julia> convert(Int, 1.5)
ERROR: InexactError: Int64(1.5)
其他编程语言随意选择某种四舍五入方法(通常是截断但有时四舍五入到最接近)。 Julia (Julia)不会猜测,要求您露骨。如果要舍入,截断,设置天花板等,可以:
julia> floor(Int, 1.5)
1
julia> round(Int, 1.5)
2
julia> ceil(Int, 1.5)
2
回到您的问题:您没有在任何地方调用
convert
,那么为什么会出现转换错误?在多种情况下,Julia会为您自动调用convert,通常是在您尝试将值分配给键入位置时。例如,如果您有一个Int
数组,并为其分配浮点值,它将自动转换:julia> v = [1, 2, 3]
3-element Array{Int64,1}:
1
2
3
julia> v[2] = 4.0
4.0
julia> v
3-element Array{Int64,1}:
1
4
3
julia> v[2] = 4.5
ERROR: InexactError: Int64(4.5)
所以这很可能发生在您身上:您通过执行
(column .- min)/max
获得非整数值,然后尝试将其分配到整数位置,并得到错误。