python - numpy.mean(X, axis=0) 当二维数组,否则什么都不做
问题描述
我有一个函数,除其他外,计算行的平均值 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
解决方案
np.atleast_2d(ar).mean(axis=0)
对于 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.])
另一个与重塑 -
ar.reshape(-1,ar.shape[-1]).mean(0)
推荐阅读
- mysql - 使用 Id 从数据库中获取数据
- git - 从待处理的拉取请求中恢复提交
- javascript - 如何在wix反应本机导航中将数据从一个屏幕传递到另一个屏幕
- docker - 如何格式化 docker ps 输出以不使用相对时间?
- swift - 如何以编程方式将图像放入 SegmentController 中 - Swift
- cassandra - Cassandra 告密者:阅读程序
- android - 在没有 ListView 的情况下滑动以刷新布局
- c# - C# - 如何从不同位置加入 SQLite 数据库?
- firebase - Cloud Firestore:如何计算读取?
- c# - C# GetFullPath 行为