gpt4 book ai didi

matlab - 为什么行向量的切片不返回行向量?

转载 作者:行者123 更新时间:2023-12-04 02:26:50 30 4
gpt4 key购买 nike

我刚开始学习 Julia。我想问一下如何让一个行向量的切片返回一个行向量?

我搜索过但找不到答案。

在 Matlab 中,获取行向量的一部分会按预期返回行向量。但在 Julia 中它返回一个数组。版本 1.5.3 (2020-11-09)

>julia
julia> x=[1 2 3 4 5 6]
1×6 Array{Int64,2}:
1 2 3 4 5 6

julia> x[1:4]
4-element Array{Int64,1}:
1
2
3
4

在 Matlab 中

>> x=[1 2 3 4 5 6 7]
>> x(1:4)

ans =

1 2 3 4

在 Julia 中执行此操作的正确方法是什么?即,行向量切片返回行向量,类似地,列向量切片返回列向量。

最佳答案

您所拥有的不是行向量,而是形状为 1x6 的矩阵,即二维数组。如果您有兴趣真正深入了解 Julia 中向量的处理方式,您可以阅读这个问题:https://github.com/julialang/julia/issues/4774这就是所谓的“认真对待矢量转置”。您可以看到这个设计中融入了很多想法。

Julia 切片将以可预测的方式删除维度:输出的维度数等于输入索引的维度之和。在您的情况下,x[1:4],输入索引切片为 1D,因此输出为 1D。如果你想要输出是二维的,你需要 1D+1D=2D 输入索引:

jl> x[1:1, 1:4]
1×4 Matrix{Int64}:
1 2 3 4

请注意,以下生成一维数组

jl> x[1, 1:4]
4-element Vector{Int64}:
1
2
3
4

那是因为第一个索引是标量,是0维的,所以输出是0D+1D=1D。

这甚至为空数组保留:

jl> x[1:0, 1:4]
0×4 Matrix{Int64}

仍然是一个矩阵,尽管它的大小是 0x4。

您还应该知道,在大多数情况下,您应该更喜欢适当的向量:[1, 2, 3, 4, 5, 6] 而不是 1xN 矩阵,[1 2 3 4 5 6]

关于matlab - 为什么行向量的切片不返回行向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66848822/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com