Скажем, у меня есть переменная Array
, называемая p
:
julia> p = [5]
julia> typeof(p)
Array{Int64,1}
Как мне преобразовать его в скаляр? p
также может быть двумерным:
julia> p = [1]''
julia> typeof(p)
Array{Int64,2}
(Примечание: двойной трансформаторный трюк для увеличения размерности может не работать в будущих версиях Julia)
С помощью соответствующих манипуляций я могу сделать p
любого измерения, но как его уменьшить до скаляра?
Один жизнеспособный подход p=p[1]
, но это не вызовет ошибки, если p
имеет более одного элемента в p
; так, что мне нехорошо.
Я мог бы создать свою собственную функцию (с проверкой),
function scalar(x)
assert(length(x) == 1)
x[1]
end
но похоже, что он должен изобретать колесо.
Не работает squeeze
, который просто снимает размеры до тех пор, пока p
не станет нулевым массивом.
(Связано с Julia: преобразование массива 1x1 из внутреннего продукта в число, но в этом случае операция-агностик.)