Jzl*_*325 7 python arrays numpy scipy
假设n维的观察阵列被重新整形为2d阵列,每行是一个观察集.使用这种重塑方法,np.polyfit可以计算整个ndarray(矢量化)的二阶拟合系数:
fit = np.polynomial.polynomialpolyfit(X, Y, 2)
Run Code Online (Sandbox Code Playgroud)
其中Y是形状(304000,21),X是矢量.这导致(304000,3)系数数组合适.
使用迭代器可以调用np.polyval(fit, X)每一行.当存在矢量化方法时,这是低效的.可以在fit结果被应用到整个观察阵列不反复?如果是这样,怎么样?
这与这个SO问题一致.
np.polynomial.polynomial.polyval 采用多维系数数组:
>>> x = np.random.rand(100)
>>> y = np.random.rand(100, 25)
>>> fit = np.polynomial.polynomial.polyfit(x, y, 2)
>>> fit.shape # 25 columns of 3 polynomial coefficients
(3L, 25L)
>>> xx = np.random.rand(50)
>>> interpol = np.polynomial.polynomial.polyval(xx, fit)
>>> interpol.shape # 25 rows, each with 50 evaluations of the polynomial
(25L, 50L)
Run Code Online (Sandbox Code Playgroud)
而且当然:
>>> np.all([np.allclose(np.polynomial.polynomial.polyval(xx, fit[:, j]),
... interpol[j]) for j in range(25)])
True
Run Code Online (Sandbox Code Playgroud)