1. ホーム
  2. コンパイラ言語
  3. パイソン

python : true_divide で無効な値に遭遇しました。

2022-01-21 10:27:04
<パス

という要件があるとします(仮定ではなく、現実のものです)。
暦年の予算費用がある場合、その伸び率を求めよ。
その後の計算を容易にするために マトリックス 行列の実装です。

# Historical data
his=matrix([[30000., 20000., 10000., 1000,]
        [ 0., 0., 0., 9000.],
        [ 0., 0., 10000., 0.],
        [ 0., 10000., 10000., 1000.],
        [ 0., 0., 0., 0., 9000.]])

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
# Pretend to be the current data
cur=his*1.24

  • 1
  • 2
rate = (cur-his)/his*100

  • 1

驚くには値しないが、このコードは報告する。
RuntimeWarning: true_divide で無効な値が検出されました。
IPython カーネルを起動するためのエントリーポイントです。

問題を解決する方法はたくさんあります。
方法1:
警告を無視する

np.seterr(divide='ignore',invalid='ignore')

  • 1

第2幕
具体的な問題ですが、予算はこんな感じです。上積み金はありません。過去に0というのは、過去にこれがなかったということで、今0というのは、今必要ないということです。

cur[cur==0]=nan

  • 1

結果

(cur-his)/his*100

  • 1
matrix([[24., 24., 24., 24,]
        [nan, nan, nan, 24.],
        [nan, nan, 24., nan],
        [nan, 24., 24., 24.],
        [nan, nan, nan, 24.]])


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6