如何将数组中的小值归零?

Val*_*éry 3 julia

是否存在将数组中的小值归零的通用方法?

"小"是指绝对值小于某个阈值的元素10.0^-5.

编辑:现在,我循环eachindex.

function sparsify(a, eps)
    for i in eachindex(a)
        if abs(a[i]) < eps
            a[i] = 0
        end 
    end
end
Run Code Online (Sandbox Code Playgroud)

Ima*_*ngo 5

为什么不只是应用一个掩码和一个元素小于运算符?

>>> x = rand(Float32, 100)
>>> eps = 0.5
>>> x[abs(x) .< eps] = 0
Run Code Online (Sandbox Code Playgroud)

或作为函数(注意函数修改向量xinplace):

>>> sparsify!(x, eps) = x[abs(x) .< eps] = 0;
Run Code Online (Sandbox Code Playgroud)

你也可以替换0zero(eltype(x)),以确保它具有相同的类型x.

创建的临时布尔掩码x .< eps将比较xto的每个元素eps.然后,满足该条件的每个元素将被设置为0.