Julia中如何将矩阵列表垂直拼接为指定维度的整体矩阵
错误原因
vcat、cat这类拼接函数的设计逻辑是:接收多个独立的待拼接对象作为入参。你直接将整个矩阵列表作为单个参数传入时,函数会把整个列表视为一个独立拼接单元,所以最终输出还是包含矩阵的向量,不会完成矩阵维度的拼接。
可行实现方案
方案1:用splat操作符展开列表参数
在列表变量后加...即可把列表内的所有元素拆分作为独立参数传入vcat,是最简洁的写法:
list_of_matrices = [randn(10, 5) for _ in 1:10] output = vcat(list_of_matrices...) # 验证维度:size(output) 会返回 (100, 5)
方案2:用reduce迭代拼接
如果矩阵列表规模很大,用reduce迭代拼接的性能会优于splat操作:
output = reduce(vcat, list_of_matrices)
方案3:通用cat函数指定维度
如果需要明确指定拼接维度,也可以用通用的cat函数,设置dims=1代表按第一维(垂直方向)拼接:
output = cat(list_of_matrices..., dims=1)
内容的提问来源于stack exchange,提问作者Physics_Student
相关产品推荐
相关产品推荐

