想象一下,例如,有一个像
这样的异构数组julia> a = {1, 2.2, int32(3), float32(4.4), 5, 6.6}
6-element Array{Any,1}:
1
2.2
3
4.4
5
6.6
其元素的单一常见类型为Float64
。
是否有函数或minimalistic命令将此类Any
数组转换为具有单个公共类型(对于给定示例为Array{Float64}
)的元素数组,而无需显式写入该类型甚至不知道它预先?
我知道如果使用括号[]
来创建数组,那么首先会获得Array{Float64}
。但是,问题是关于类型1在创建时无法控制的数组的转换(例如,一些数组解析,从文件读取的数组,......)。
答案 0 :(得分:5)
您要转换类型的函数称为convert
julia> a = {1, 2.2, int32(3), float32(4.4), 5, 6.6}
f6-element Array{Any,1}:
1
2.2
3
4.4
5
6.6
julia> convert(Array{Float64,1},a)
6-element Array{Float64,1}:
1.0
2.2
3.0
4.4
5.0
6.6
修改强> 我不确定我理解你的为什么你会想要你想要的行为,但我认为你问的问题的解决方案(不是你有的问题!),是:
[promote(a...)...]
答案 1 :(得分:2)
怎么样:
reshape([a...],size(a)...)
如果您对Vector感到满意,可以使用:
[a...]
答案 2 :(得分:0)
我刚刚发现vcat(a...)
也有效。
但我认为@ ivarne的解决方案更可取,因为它明确告诉我们想要做什么。
另一方面,如果没有为数组元素类型定义convert(a...)
,则{{1}}不起作用。