numpy.mean(X,axis=0) 当二维数组时,否则什么都不做

roc*_*ves 4 python numpy linear-algebra

我有一个函数,除其他外,它计算 ndarray(2d 或 1d)行的平均值。这是通过ndarray.mean(axis=0)

对于一维数组,我希望它只返回自身,因为只有 1 个“行”,而不是平均元素并返回标量。

除了ndim在取平均值之前检查属性之外,是否有一种pythonic方法可以做到这一点?

def d_Error(X, y, weights, bias):
    y_hat = probability(X, weights, bias)
    dE_matrix =  (X.T * (y - y_hat)).T  # each row is the gradient at that sample
    dEdw = np.mean(dE_matrix, axis=0) # get average gradient
    dEdb = (y - y_hat).mean() # gives scalar
    dEdz = np.append(dEdw, dEdb)
    return dEdz
Run Code Online (Sandbox Code Playgroud)

Div*_*kar 6

使用np.atleast_2d-

np.atleast_2d(ar).mean(axis=0)
Run Code Online (Sandbox Code Playgroud)

对于 2D,np.atleast_2d不会改变任何东西。对于1D,让我们看一个示例案例 -

In [125]: a1D = np.arange(4).astype(float)

In [126]: a1D
Out[126]: array([0., 1., 2., 3.])

In [127]: np.atleast_2d(a1D).mean(axis=0)
Out[127]: array([0., 1., 2., 3.])
Run Code Online (Sandbox Code Playgroud)

另一个重塑 -

ar.reshape(-1,ar.shape[-1]).mean(0)
Run Code Online (Sandbox Code Playgroud)