我是python和numpy的新手,我无法理解平均函数的参数。
我这样定义了我的数据。
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状态的文档:
a:array_like包含其平均值所需数字的数组。如果是的话 不是数组,尝试转换。
对我而言,这听起来像调用此函数的正常方式
numpy.mean(C1
)导致
(1.1310301021862881)
相似使用不带参数的C1也会产生单个值。我不知道为什么?
C1.mean()
//returns array(1.1310301021862881)
答案 0 :(得分:2)
这里涉及两个不同的功能:
第一个用作np.mean(C1)
。第二个像C1.mean()
一样使用并做同样的事情。但是,当您说C1.mean(1)
时,1
被用作axis
参数,它会为您提供向量而不是标量结果。
答案 1 :(得分:1)
为了避免概念上的混淆,我会更改您的mean
变量名称:
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
。
查看docs
method
版mean
的{{1}}:
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
来调用它;让我们对关键字版本做同样的事情:
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
(即未提供),它将取axis=1
的所有100个值的平均值,从而得到一个值。使用C1
,它取axis
每行的平均值,因此为2个值。
有关mean
和sum
等函数中int* createArray() {
int* arr = new int[2];
// your code
return arr;
}
参数含义的更详细讨论:
Sum along axis in numpy array