Julia中Any类型矩阵转Float无效,求问题原因
问题原因及解决方法
你的代码没法改变原矩阵的数据类型,核心原因是Julia中数组的元素类型在创建后是不可变的——你一开始创建的rand2是Array{Any,2}类型(二维Any数组),即便你把每行的元素转换成Float64,整个矩阵的容器类型还是Any,因为它的元素类型被固定为Any了。
举个例子,假设你初始化的rand2是这样:
rand2 = Any[1 2; 3 4]
它的类型是Array{Any,2}。你循环里的操作只是把每行的元素从Any类型的数值换成了Float64数值,但矩阵本身的类型依然是Array{Any,2},因为你没有改变容器的类型,只是替换了容器里的元素内容。
正确的做法是直接创建一个新的Float64类型矩阵,不需要循环:
- 方法一:用
convert直接转换整个矩阵
rand2_float = convert(Array{Float64,2}, rand2)
- 方法二:用广播语法更简洁
rand2_float = Float64.(rand2)
这样得到的rand2_float就是Array{Float64,2}类型的矩阵,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Josie G
相关产品推荐
相关产品推荐

