如何用TensorCast.jl实现reduce(hcat, Vector{Vector})操作?
使用TensorCast.jl实现向量转矩阵的解决方案
正确实现方式
TensorCast.jl的@reduce宏主打聚合操作(如求和、平均),而将Vector{Vector{Float64}}转为矩阵,用@cast宏更直观,或调整@reduce语法明确维度映射:
方法1:用@cast指定维度对应
直接定义矩阵元素与输入向量的索引关系:
using TensorCast # 示例数据:5个长度为5的Float64向量 a = [rand(5) for _ in 1:5] @cast b[i,j] := a[j][i]
执行后b就是和reduce(hcat, a)完全一致的5×5矩阵。
方法2:调整@reduce的写法
若坚持用@reduce,需明确输出维度的映射逻辑:
# 写法1:显式指定维度 @reduce b[i,j] := hcat(a[j])[i] # 写法2:简化维度标注 @reduce b[:,j] := a[j]
两种写法都能得到目标矩阵。
错误原因
你之前的@reduce b := hcat(a)触发MethodError,是因为@reduce需要明确的维度映射规则,它无法解析无维度标注的hcat调用——必须告诉宏输出矩阵的每个维度对应输入向量的哪个索引。
内容的提问来源于stack exchange,提问作者Shayan
相关产品推荐
相关产品推荐

