【发布时间】:2019-04-16 18:51:22
【问题描述】:
我的 Julia 代码中有一个向量和一个矩阵(Array{T,1} 和 Array{T,2}),我想附加它们,使向量成为矩阵中的新行(应该是第一排)。我尝试了几种方法(cat 等),但不断收到错误,我认为这些错误与数据的不同形状有关。请参阅下面的示例。
julia> v = Vector([1, 2, 3])
3-element Array{Int64,1}:
1
2
3
julia> m = Matrix([4 5 6; 7 8 9])
2×3 Array{Int64,2}:
4 5 6
7 8 9
julia> cat(v,m,dims=(1,2))
5×4 Array{Int64,2}:
1 0 0 0
2 0 0 0
3 0 0 0
0 4 5 6
0 7 8 9
我真正想要的是
1 2 3
4 5 6
7 8 9
我意识到我可以使用 transpose(v) 来解决这个问题,但我希望避免额外的调用。
谢谢!
【问题讨论】:
-
据我所知这是不可能的(Julia 在这里很严格,将法线向量视为列向量)。请注意,
transpose是高效的,因为它不会分配新的向量。 -
谢谢,也许答案就是使用
transpose。我没有意识到它没有创建一个新的向量。 -
同样简单的
'在大多数情况下应该足够好(它是伴随操作,但如果你不使用复数,它应该可以使用并且更短)。 -
没有必要使用
Vector和Matrix构造函数。[1,2,3]已经是一个向量,m也是如此。构造函数调用是完全多余的,最坏的情况是做额外的工作。
标签: julia