2017-01-26 8 views
1

私はPythonとnumpyの新人です。平均関数のパラメータを理解するのに苦労しています。numpy平均関数のパラメータ 'a'はどのように機能しますか?

私はこのようなデータを定義しました。

mean = [2, 0.5] 
cov = [[0.8, 0.1],[0.1, 0.5]] 
np.random.seed(17) 
C1 = np.random.multivariate_normal(mean, cov,50).T 

ここで平均値を近似したいと思います。私はこのようにしています:

C1.mean(1) 
// returns array([ 1.81203223, 0.45002797]) 

私はこのコンセプトの周りに私の頭を包むことができないので、私はこの解決策で混乱しています。 numpy.mean状態に対する

ドキュメント:

:平均望ましい数を含むarray_like配列。 aが配列でない である場合、変換が試みられます。

は、私にとっては、これはまた、パラメータなしで

(1.1310301021862881) 

同様の使い方C1になり、単一の値になり、この関数は numpy.mean(C1だろう呼び出すための通常の方法)のように聞こえます。どうしてか分かりません?

C1.mean()  
//returns array(1.1310301021862881) 

答えて

1

In [794]: mparam = [2, 0.5] 
In [795]: cov = [[0.8, 0.1],[0.1, 0.5]] 
In [796]: np.random.seed(17) 
In [797]: C1 = np.random.multivariate_normal(mparam, cov,50).T 
In [798]: C1.shape 
Out[798]: (2, 50) 

だからあなたC1配列が2Dであるが、 2はmparamのサイズから、50は3番目の引数からnormalまでです。meanmethodバージョンのdocs

ルック:

In [799]: C1.mean? 
Docstring: 
a.mean(axis=None, dtype=None, out=None, keepdims=False) 

Returns the average of the array elements along given axis. 

Refer to `numpy.mean` for full documentation. 

See Also 
-------- 
numpy.mean : equivalent function 
Type:  builtin_function_or_method 

C1.mean(1)1ある第1引数で呼び出し、これを。キーワードのバージョンと同じことをしてみましょう:最初の引数が配列そのものであることを除い

In [800]: C1.mean(axis=1) 
Out[800]: array([ 1.81203223, 0.45002797]) 

meanの機能バージョンは、同じである:

In [801]: np.mean(C1, axis=1) 
Out[801]: array([ 1.81203223, 0.45002797]) 

方法と機能の区別が混乱している場合クラス定義についていくつかのPythonの基本を見直す必要があります。

C.mean()axis=None、デフォルトです。 np.meanのドキュメントには、このaxisパラメータの詳細があります。 None(つまり、指定されていない)の場合は、C1という100個の値の平均をとり、1つの値になります。 axis=1では、各行の平均値はC1であり、したがって2つの値をとります。

meansumのような関数でaxisパラメータの意味のより詳細な議論: Sum along axis in numpy array

2

ここに関与する2つの異なる機能があります。

  1. https://docs.scipy.org/doc/numpy/reference/generated/numpy.mean.html
  2. https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.mean.html

は、最初はnp.mean(C1)のように使用されます。 2番目はC1.mean()のように使用され、同じことをします。しかし、C1.mean(1)と言うと、1axisパラメータとして使用されています。スカラー結果の代わりにベクトルが与えられます。ちょうど私があなたのmean変数名変更します概念的な混乱を避けるために

関連する問題