Wolfram mathematica 更改列表中的“0”以避免被0除的错误

Wolfram mathematica 更改列表中的“0”以避免被0除的错误,wolfram-mathematica,Wolfram Mathematica,假设我有一个嵌套列表:{2,0,3},{4,0,4},{0,0,9}。我想把所有的0改为0.00001,或者其他一些小值,这样最终的结果是{{2,0.00001,3},{4,0.00001,4},{0.00001,0.00001,9} 如果不使用For和If函数,我将如何执行此操作 提前谢谢 {{2, 0, 3}, {4, 0, 4}, {0, 0, 9}} /. {0 -> 0.0001} (* -> {{2,0.0001,3},{4,0.0001,4},{0.0001,0.000

假设我有一个嵌套列表:{2,0,3},{4,0,4},{0,0,9}。我想把所有的0改为0.00001,或者其他一些小值,这样最终的结果是{{2,0.00001,3},{4,0.00001,4},{0.00001,0.00001,9}

如果不使用For和If函数,我将如何执行此操作

提前谢谢

{{2, 0, 3}, {4, 0, 4}, {0, 0, 9}} /. {0 -> 0.0001}
(*
-> {{2,0.0001,3},{4,0.0001,4},{0.0001,0.0001,9}}
*)
然而,正如@nomoulus所说,这不太可能是实现你所追求的目标的最佳方式。那么,你想做什么?您试图解决的实际问题是什么

编辑:在你的评论中,你提到你正在尝试分割图像。在没有看到更多代码的情况下,我建议如下:

i1 = Image[ {{0, 1, 0}, {1, 0, 1}, {0, 1, 0}}]
i2 = Image[ RandomReal[1, {3, 3}]]
Image[Quiet[i2[[1]]/i1[[1]]] /. ComplexInfinity -> 1]
它提取数据列表,进行除法,允许按零进行除法,从而产生复杂度,将复杂度替换为允许的最大值1,然后将图像环绕结果列表


如果显示更多代码,可能会更容易提出更好的建议。

也许更好的解决方案是允许除法为零,但不显示警告:

In[1]:= Quiet[1/{{2, 0, 3}, {4, 0, 4}, {0, 0, 9}}, Power::infy]
Out[1]= {{1/2,ComplexInfinity,1/3}, {1/4,ComplexInfinity,1/4}, {ComplexInfinity,ComplexInfinity,1/9}}
但是我想如果你想用0.00001替换整数0,那么你可以试试

In[2]:= {{2, 0, 3}, {4, 0, 4}, {0, 0, 9}} /. 0 -> 0.00001
       1/%
Out[2]= {{2,0.00001,3},{4,0.00001,4},{0.00001,0.00001,9}}
Out[3]= {{1/2,100000.,1/3},{1/4,100000.,1/4},{100000.,100000.,1/9}}

在这里,将零更改为非常小的值似乎不太可能是最优雅的解决方案。你到底想做什么?我想把两个图像分割成另一个图像。图像是灰度的,像素值从0黑色到1白色不等。我们如何处理黑色像素的除法?@flame您希望从0/0和0/1得到什么结果?