gpt4 book ai didi

arrays - 我应该如何将单例数组转换为标量?

转载 作者:行者123 更新时间:2023-12-03 23:53:11 25 4
gpt4 key购买 nike

假设我有一个 Array变量名为 p :

julia> p = [5]
julia> typeof(p)
Array{Int64,1}

我应该如何将其转换为标量? p也可能是二维的:
julia> p = [1]'' 
julia> typeof(p)
Array{Int64,2}

(注意:增加维度的双转置技巧 might not work in future versions of Julia )

通过适当的操作,我可以使 p任何维度,但我应该如何将其减少到标量?

一种可行的方法是 p=p[1] , 但如果 p 不会抛出任何错误在 p 中有多个元素;所以,这对我没有好处。
我可以构建自己的函数(带检查),
function scalar(x)
assert(length(x) == 1)
x[1]
end

但它似乎必须重新发明轮子。

不起作用的是 squeeze ,它只是剥离尺寸直到 p是一个零维数组。

(与 Julia: convert 1x1 array from inner product to number 有关,但在这种情况下,与操作无关。)

最佳答案

如果您想获取标量但如果数组形状错误则抛出错误,您可以 reshape :

julia> p1 = [4]; p2 = [5]''; p0 = []; p3 = [6,7];

julia> reshape(p1, 1)[1]
4

julia> reshape(p2, 1)[1]
5

julia> reshape(p0, 1)[1]
ERROR: DimensionMismatch("new dimensions (1,) must be consistent with array size 0")
in reshape at array.jl:122
in reshape at abstractarray.jl:183

julia> reshape(p3, 1)[1]
ERROR: DimensionMismatch("new dimensions (1,) must be consistent with array size 2")
in reshape at array.jl:122
in reshape at abstractarray.jl:183

关于arrays - 我应该如何将单例数组转换为标量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29159386/

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