2016-04-10 6 views
0

に遭遇したゼロによる除算、私はこのエラーについての質問聞いてるのよ:RuntimeWarning:たとえば除算RuntimeWarning:除算

に遭遇したゼロによる除算は、私は2つの2D配列を持っています。最初のデータには大量のデータ(array_1)が含まれ、2番目のデータにはバイナリデータ(0または1)がマスク(mask_array)として格納されます。私はこのRuntimeWarningエラーが発生します、明らかに

result = array_1/mask_array 

私は、この操作を行いたいと思います。だから私の質問は: これは何かを書くことは可能ですか:私はゼロで割る場合は、結果として0を書く?

0で割ったときにNaNを取得するとしますか?

どのように私は操作を行うことができ、エラーが発生するたびに結果をゼロで置き換えることができますか?

ありがとうございました!

+2

'mask_array'のみ '1'と '0'が含まれている場合は、単純な乗算は正確にあなたのように動作しますカスタム部門 – schwobaseggl

+0

'if(mask_array!= 0){//ここにコード} else {// divider zero}' – kakurala

+0

@schwobasegglあなたのコメントはとても良いです。他のエラーが出ますが、この操作の直後にガウス関数でヒストグラムをフィッティングすることについてです; – Deadpool

答えて

1

あなただけmask_arrayあなたはちょうど使用してゼロにこれらのすべての要素を設定することができます0

でゼロにすべての要素を設定したいように思え:

result = array_1.copy() 
result[mask_array == 0] = 0 # Indexes all elements that are zero and sets them to zero. 

かをできもnumpy.ma.MaskedArray

result = np.ma.array(array1.copy(), mask=mask_array) 

を使用して操作してください。あなたはおそらく代わりに除算の乗算をしたいので

また@schwobasegglのコメントは非常に有用かもしれない:

array1 = np.array([1, 2, 3, 4]) 
mask = np.array([1, 0, 1, 0]) 
array1 * mask 
# gives: array([1, 0, 3, 0]) 
+0

あなたの答えをありがとう!私のコードでもう一度エラーが発生しても動作します;) – Deadpool