是否存在将数组中的小值归零的通用方法?
"小"是指绝对值小于某个阈值的元素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)
为什么不只是应用一个掩码和一个元素小于运算符?
>>> 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)
你也可以替换0用zero(eltype(x)),以确保它具有相同的类型x.
创建的临时布尔掩码x .< eps将比较xto的每个元素eps.然后,满足该条件的每个元素将被设置为0.