一番手っ取り早いのはこんな感じ
A = rand(5,5) A[A.<1.0e-10] .= 0
以下,強い人に教わったこと. 絶対値が1e-10以下なら0にする場合に真っ先に思い浮かぶのは
X[abs.(X) .≤ 1e-10] .= 0
だけど,これは遅い. やりたいこと分解して,
small2zero(x, ε=1e-10) = ifelse(abs(x) ≤ ε, zero(x), x)
A .= small2zero.(A)
とすればよい.
#Julia言語 絶対値が1e-10以下なら0にする函数を書く:
— 黒木玄 Gen Kuroki (@genkuroki) 2021年4月8日
small2zero(x, ε=1e-10) = ifelse(abs(x) ≤ ε, zero(x), x)
配列Aに
A .= small2zero.(A)
または
@. A = small2zero(A)
のように適用する。
やりたいことを分割して、小さな汎用的函数の集まりで問題を解くと楽。 https://t.co/CxetvrrVOg pic.twitter.com/iB7VTtCtR3