我有一个很大的矩阵,有很多非常小的元素,我认为这些元素是0。在mathematica中,有一个名为Chop的函数:
Chop[expr]取代接近于expr的近似实数。
0乘以精确的整数0。
详情
取代绝对大小小于-cc> 0的数。
Chop[expr,delta]使用10-10的默认容差。
因此,我想问一下python中是否有这样的函数。
最佳答案
这没有内置功能,但您可以自己轻松创建一个:
def chop(expr, *, max=0.3): return [i if i > max else 0 for i in expr]
调用此命令会将小于或等于0.3的所有数字转换为0:
>>> chop([1.0, 0.2, 0.4, 0.3, 0.31]) [1.0, 0, 0.4, 0, 0.31]
您应该将max的默认值更改为更适合您需要的值,但您也可以为单个呼叫分别更改它:
>>> chop([0.2, 0.3, 0.4], max=0.25) [0, 0.3, 0.4] >>> chop([0.3, 1, 2, 3], max=2) [0, 0, 0, 3]
如果你愿意,你也可以转换负数!对于正数和负数,从零开始使用相同的距离:
def chop(expr, *, max=0.3): return [i if abs(i) > max else 0 for i in expr]
或者使用两种不同的限制:
def chop(expr, *, max=0.3, min=-0.3): if max < min: raise ValueError return [ i if i > max or i < min else 0 for i in expr ]
关于python - python在Mathematica中是否具有类似“Chop”的功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43751591/