@Kone7

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

ZeroDivisionErrorをどう解決すればいいのかわからない。

解決したいこと

プログラミング初心者です。
異常検知で画像のピクセルの値が5以上の時のみの誤差を求めようとしたのですがZeroDivisionErrorが出てしまいました。
nの値がおかしいのではと思うのですが解決策がわかりません。
ご教授のほどお願いいたします。

発生している問題・エラー

ZeroDivisionError                         Traceback (most recent call last)
/var/folders/vm/snb6b63s01b67s_d0m_qb5q40000gp/T/ipykernel_26334/3532088993.py in <module>
      7             a = a+((reconst_images[0][i,j,0]-test[0][i,j,0]+reconst_images[0][i,j,1]-test[0][i,j,1]+reconst_images[0][i,j,2]-test[0][i,j,2])/3)*((reconst_images[0][i,j,0]-test[0][i,j,0]+reconst_images[0][i,j,1]-test[0][i,j,1]+reconst_images[0][i,j,2]-test[0][i,j,2])/3)
      8             n = n+1
----> 9 a = a/n
     10 a = a**0.5

ZeroDivisionError: division by zero

該当するソースコード

a=0
n=0

for i in range(0,height-1):
    for j in range(0,width-1):
        if reconst_images[0][i,j,0]-test[0][i,j,0] >= 5:
            a = a+((reconst_images[0][i,j,0]-test[0][i,j,0]+reconst_images[0][i,j,1]-test[0][i,j,1]+reconst_images[0][i,j,2]-test[0][i,j,2])/3)*((reconst_images[0][i,j,0]-test[0][i,j,0]+reconst_images[0][i,j,1]-test[0][i,j,1]+reconst_images[0][i,j,2]-test[0][i,j,2])/3)
            n = n+1
a = a/n
a = a**0.5
0 likes

1Answer

もしかしてaも0じゃないですか?
一度も条件に一致せず,a = a / nのところでa = 0 / 0が実行されています.n == 0とそれ以外で条件分岐し,エラーの有無をはっきりさせて,n > 0である場合にa = a / nを計算すると良いでしょう.

1Like

Comments

  1. @Kone7

    Questioner

    ご回答いただきありがとうございました。

Your answer might help someone💌