web-dev-qa-db-ja.com

numpy.gradientは何をしますか?

(数学)関数の勾配が何であるかを知っているので、numpy.gradientします。しかし、私はしません。 documentation はあまり役に立ちません:

N次元配列の勾配を返します。

配列の勾配は何ですか?時である numpy.gradient役に立つ?

24
usual me

勾配は、内部の中心差と境界での最初の差を使用して計算されます。

そして

デフォルトの距離は1です

これは 意味 内部では次のように計算されます

enter image description here

ここで、h = 1.0

そして境界で

enter image description here

9
4pie0

また、ドキュメント内1

>>> y = np.array([1, 2, 4, 7, 11, 16], dtype=np.float)
>>> j = np.gradient(y)
>>> j 
array([ 1. ,  1.5,  2.5,  3.5,  4.5,  5. ])
  • 勾配は(yの変更)/(xの変更)として定義されます。
  • ここで、xはインデックスであるため、隣接する値の差は1です。

  • 境界で、最初の差が計算されます。これは、配列の各端で与えられる勾配が単純に、最後の2つの値の差(1で除算される)であることを意味します

  • 境界から離れて、特定のインデックスの勾配は、両側の値の差を取り、2で割ることによって与えられます。

したがって、上記のyの勾配は次のように計算されます。

j[0] = (y[1]-y[0])/1 = (2-1)/1  = 1
j[1] = (y[2]-y[0])/2 = (4-1)/2  = 1.5
j[2] = (y[3]-y[1])/2 = (7-2)/2  = 2.5
j[3] = (y[4]-y[2])/2 = (11-4)/2 = 3.5
j[4] = (y[5]-y[3])/2 = (16-7)/2 = 4.5
j[5] = (y[5]-y[4])/1 = (16-11)/1 = 5

たとえば、結果の配列内のすべての絶対値の最小値を見つけて、曲線の転換点を見つけることができます。


1配列は、ドキュメントの例では実際にxと呼ばれていますが、混乱を避けるためにyに変更しました。

58
SiHa

N次元配列を行列と考えてください。そして、勾配は行列微分

適切な説明については、MATLABドキュメントの gradient の説明を参照してください。

1
Robert Zaremba