2016-04-10 10 views
0

karşılaşılan böl ÖrneğinRuntimeWarning: RuntimeWarning: sıfıra bölmek bu hatayla ilgili bir soru soruyorum ayrımın

karşılaşılan sıfıra bölme, iki 2D diziler var. İlki çok veri (dizi_1) içerir ve ikincisi ise maske (mask_array) olarak ikili verilere (0 veya 1) sahiptir. Bu RuntimeWarning hatası alırsınız, Açıkçası

result = array_1/mask_array 

:

Bu operasyonu yapmak istiyoruz. Yani sorum şu: Böyle bir şey yazmak mümkün mü: Sıfırla bölersem sonuç olarak 0 yazalım mı?

0'a bölerek NaN alacağımı mı tahmin ediyorum?

Hata nasıl olursa olsun işlemi nasıl yapabilirim ve sonucu sıfır olarak nasıl değiştirebilirim?

Yardımlarınız için teşekkür ederiz!

+2

eğer 'mask_array' sadece' içeriyor 1' ve '0', basit çarpma gibi çalışmaya devam senin Özel bölüm – schwobaseggl

+0

Kodu 'if (mask_array! = 0) {// code here} else {// bölücü sıfır} ' – kakurala

+0

@ @schwobaseggl Yorumunuzu yazın çok iyi. Başka bir hata alıyorum ama bu işlemden hemen sonra bir Gaussian tarafından yapılan histogram hakkında;) – Deadpool

cevap

1

O mask_array Sadece kullanarak sıfıra Bu unsurların hepsi ayarlayabilirsiniz 0.

nerede olduğunu sadece sıfıra tüm unsurları ayarlamak istediğiniz gibi görünüyor:

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

ya da olabilir

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

ve sonra onunla işlemleri yapın: numpy.ma.MaskedArray kullanın. muhtemelen yerine bölünme çarpma istiyorum, çünkü

Ayrıca @schwobaseggl tarafından açıklama çok yararlı olabilir:

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

Cevabınız için teşekkürler! Kodumda bir hata daha alsam bile çalışır.) – Deadpool

İlgili konular