bugfix> numpy > 投稿

私は何か間違ったことが起こった:

import numpy as np
import matplotlib.pyplot as plt
x  = np.concatenate((np.linspace(0,1,100),np.linspace(1,2,50)));
f  = np.power(x,2);
df = 2*x;
Df = np.gradient(f,x);
plt.plot(x,df,'r', x,Df,'b');plt.show()

これは私が得るものです:

それ以外の場合、線形に間隔を空けた配列を使用し、引数xを使用しなくても問題はありません。

助言がありますか?

回答 1 件
  • これは、1.13より前のnumpyバージョンは、「x」引数が一定のグリッド間隔であると想定しているためだと思います(https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.gradient.htmlを参照してください) #numpy.gradient)。以前のバージョンはスカラーdxを想定していましたが、これをチェックせず、結果はnp.gradient(f)/ xであり、これは有効な除算です。 numpy 1.13用に記述されたコードは、以前のバージョンで正しく出力されずエラーなしで実行される可能性があるため、これはかなり面倒です。

あなたの答え