Юлия - абсолютное значение массива - PullRequest
0 голосов
/ 27 декабря 2018

Я хочу получить абсолютное значение следующего массива:

x = [1.1 -22.3 3.01, -1]

т.е.: я хочу вывод типа: x2 = [1.1 22.3 3.01 1] Однако, когда я набираю:

abs(x)

Я получаю ошибку:

ERROR: MethodError: no method matching abs(::Array{Float64,2})
Closest candidates are:
  abs(::Pkg.Resolve.MaxSum.FieldValues.FieldValue) at /Users/vagrant/worker/juliapro-release-osx1011-0_6/build/tmp_julia/Julia-1.0.app/Contents/Resources/julia/share/julia/stdlib/v1.0/Pkg/src/resolve/FieldValues.jl:67
  abs(::Pkg.Resolve.VersionWeights.VersionWeight) at /Users/vagrant/worker/juliapro-release-osx1011-0_6/build/tmp_julia/Julia-1.0.app/Contents/Resources/julia/share/julia/stdlib/v1.0/Pkg/src/resolve/VersionWeights.jl:40
  abs(::Missing) at missing.jl:79
  ...
Stacktrace:
 [1] top-level scope at none:0

1 Ответ

0 голосов
/ 27 декабря 2018

Джулия не применяет автоматически скалярные функции, такие как abs, к элементам массива.Вместо этого вы должны сказать Джулии, что это то, что вам нужно, и передать скалярную функцию abs по вашему массиву, см. https://docs.julialang.org/en/v1/manual/arrays/#Broadcasting-1. Это можно сделать как

julia> x = [1.1, -22.3, 3.01, -1];

julia> broadcast(abs, x)
4-element Array{Float64,1}:
  1.1 
 22.3 
  3.01
  1.0

или вы можете использовать "точку"-notation ", что является более идеологическим:

julia> abs.(x)
4-element Array{Float64,1}:
  1.1 
 22.3 
  3.01
  1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...