Numpy将值设置在零以上和零以下到零的范围内

fkvaft9z  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(130)

我在用numpy构建一个优化模型,我有一个矩阵,值为1 e-17,还有-1e-17,我想把它们设置为零,在零以上和以下的1 e-8的范围内,这样矩阵系数就不会那么大。
我在另一篇文章中发现了这个a = [0 if a_ > thresh else a_ for a_ in a]。但是它只适用于非负值。我尝试添加另一个阈值,如下所示:a = [0 if a_ > thresh and a_<thresh2 else a_ for a_ in a]
这给出了一条错误消息:* “一个包含多个元素的数组的真值是不确定的。使用.any()或.all()。"* 我添加了如下代码:a = [0 if (a_ > thresh and a_<thresh2).all() else a_ for a_ in a].这个也不起作用。
这个问题有简单的解决方法吗?有什么解决方法吗?

t9aqgxwy

t9aqgxwy1#

我认为你想把绝对值和阈值进行比较,这应该是python内置的。

a = [0 if abs(a_) > thresh else a_ for a_ in a]

如果我错过了一些关于python处理没有numpy的小数字的东西,这里还有一个numpy.absolute(a_)函数。

相关问题