将列嵌套数组转换为行嵌套数组的最优方法
列嵌套数组转行嵌套数组的优化实现(Julia)
针对将列嵌套数组 column_nested = [[1, 2], [2, 3], [5, 4]] 转换为行嵌套数组 row_nested = [[1, 2, 5], [2, 3, 4]] 的需求,以下是几种更简洁且类型友好的实现方法:
方法一:使用
zip函数(最优简洁方案)
利用zip的打包特性,直接将各列的对应元素组合,再转为数组:column_nested = [[1, 2], [2, 3], [5, 4]] row_nested = collect.(zip(column_nested...))此方法代码最简洁,且能很好保留原元素类型,无需额外矩阵转换操作,效率较高。
方法二:列表推导式(直观易懂)
通过按行索引遍历每一列的对应元素,直接构造行嵌套数组:row_nested = [[col[i] for col in column_nested] for i in 1:length(column_nested[1])]逻辑直观,完全避免矩阵转换带来的类型损耗,适合需要清晰展示转换逻辑的场景。
方法三:结合
reduce与permutedims(矩阵转换优化版)
基于矩阵转置逻辑优化原方案,减少类型破坏:row_nested = collect.(eachrow(permutedims(reduce(hcat, column_nested))))相比原方案,用
reduce(hcat, ...)替代hcat(column_nested...)更规范,permutedims明确执行转置,最后通过collect.(eachrow(...))生成目标数组,类型兼容性更好。
内容的提问来源于stack exchange,提问作者Raumschifffan
相关产品推荐
相关产品推荐

