【发布时间】:2013-12-10 17:57:09
【问题描述】:
假设一个 n 维的观察数组被重新整形为一个二维数组,每一行是一个观察集。使用这种重塑方法,np.polyfit 可以计算整个 ndarray(矢量化)的二阶拟合系数:
fit = np.polynomial.polynomialpolyfit(X, Y, 2)
其中 Y 是形状 (304000, 21),X 是向量。这会产生一个 (304000,3) 的系数数组,fit。
使用迭代器可以为每一行调用np.polyval(fit, X)。当可能存在矢量化方法时,这是低效的。 fit 结果可以在不迭代的情况下应用于整个观察数组吗?如果有,怎么做?
这与this SO question 类似。
【问题讨论】:
-
仅供参考,不要在来自
np.polynomial.polynomial.polyfit的结果上调用np.polyval。使用np.polynomial.polynomial.polyval。见stackoverflow.com/a/18767992/1730674。 -
一种更优雅但仍然很慢的方法是将polyfit与
np.apply_along_axis...one example here一起使用 -
@askewchan 绝对!完整的通话路径让我很懒惰。 @Saullo Castro - 正如您所建议的那样,
np.apply_along_axis并不比 [i,j] 迭代器快。我想知道是否存在真正的矢量化(在 C 级别)方法。