入れ子リストがあるとします:{{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}}
0で除算することを避けるためにリスト内の '0'を変更する
どのように私はFor
とIf
機能を使用せずに、そうやって行きますか?
ありがとうございます。
入れ子リストがあるとします:{{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}}
0で除算することを避けるためにリスト内の '0'を変更する
どのように私は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}}
*)
@nomulousが言ったように、これがあなたが何をしているのかを達成する最良の方法であるとは思われません。それで、あなたは何をしようとしていますか?あなたが解決しようとしている実際の問題は何ですか?
編集:あなたのコメントでは、画像を分割しようとしていると言います。より多くのコードを見ることなく、私はこのような何かをお勧めしたい:、
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]
データのリストを抽出し、ゼロによる除算がComplexInfinity
を得発生することができ、分割し、1だけComplexInfinity
を置き換える(最大許容)、その後、ラップ結果リストにはImage
があります。
多分もっと多くのコードを表示すれば、何か良いことを示唆しやすくなるでしょう。
たぶん、より良い解決策は、ゼロ除算を許可しますが、この警告を抑止することです:
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でInteger
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}}
を試すことができると思います
ゼロを非常に小さいものに変更することは、ここで最も洗練された解決策ではないようです。あなたは正確に何をしようとしていますか? – fletom
私は別のイメージを形成するために2つのイメージを分割しようとしています。画像はグレースケールで、ピクセル値は0(黒)から1(白)の範囲です。どのように黒い画素による分割を処理するのですか? – flamearchon
@flame '0/0'と' 0/1'からどんな結果が欲しいですか? –