在Julia中如何高效将一维数组向量转换为二维矩阵?
问题:将一维矩阵向量转换为二维矩阵(Julia)
你拥有一个由矩阵组成的一维向量,示例如下:
P_predefined = [[.3 .4 .2 .1], [.2 .3 .5 0.], [.1 0. .8 .1], [.4 0. 0. .6]]
希望将其转换为二维矩阵,尝试使用vcat函数(期望其表现类似Python中的vstack)但未成功:
vcat(algorithm.predefinedP)
执行后仍返回原向量类型:
[[0.3 0.4 0.2 0.1], [0.2 0.3 0.5 0.0], [0.1 0.0 0.8 0.1], [0.4 0.0 0.0 0.6]] #Vector{Matrix{Float64}}
正确实现方法
在Julia中,vcat仅传入单个容器时不会展开内部元素,要实现垂直堆叠效果,需要将向量内的矩阵作为独立参数传入,以下是两种可行方案:
方法1:使用splat运算符...展开元素
通过...将向量中的每个矩阵拆解为vcat的独立参数,实现垂直拼接:
vcat(P_predefined...)
方法2:使用reduce结合vcat
通过reduce迭代拼接向量中的所有矩阵:
reduce(vcat, P_predefined)
两种方法最终都会得到目标二维矩阵:
4×4 Matrix{Float64}: 0.3 0.4 0.2 0.1 0.2 0.3 0.5 0.0 0.1 0.0 0.8 0.1 0.4 0.0 0.0 0.6
内容的提问来源于stack exchange,提问作者PokeLu
相关产品推荐
相关产品推荐

