y_boxes_1 = [y[i:i + divisor_1] for i in range(0, len(y), divisor_1)]
x_boxes_1 = [x[i:i + divisor_1] for i in range(0, len(x), divisor_1)]
上面的代码将列表除以除数。我想做的是使用numpy polyfit为y和x的每个单独的框创建一个多项式系数的新列表。
如果:
x_boxes_1 = [[1,2,3,4,5,6,7,8],[9,10,11,12,13,14,15,16]]
y_boxes_1 = [[3,5,2,3,1,2,3,4],[2,3,4,1,5,6,7,10]]
然后,polyfit将仅使用x_boxes_1 [0]和y_boxes_1 [0]和x_boxes_1 [1]和y_boxes_1 [1]中的值,并使用每个单独计算的系数生成一个新列表。
我该怎么做?
答案 0 :(得分:1)
据我了解,x_boxes_1
保留坐标,而y_boxes_1
保留您要拟合多项式的点。并且,您想为每个对应的对呼叫两次polyfit
。如果是这样,这应该可行:
import numpy as np
import matplotlib.pyplot as plt
x_boxes_1 = [[1,2,3,4,5,6,7,8],[9,10,11,12,13,14,15,16]]
y_boxes_1 = [[3,5,2,3,1,2,3,4],[2,3,4,1,5,6,7,10]]
zipped = zip(x_boxes_1, y_boxes_1)
z_boxes_1 = [np.polyfit(x,y,6) for x,y in zipped]
请注意,拟合多项式的阶数为6。
您可以密谋验证:
xp_boxes_1 = [np.linspace(1, 8, 100), np.linspace(9, 16, 100)]
for i in [0,1]:
x = x_boxes_1[i]
y = y_boxes_1[i]
z = z_boxex_1[i]
xp = xp_boxes_1[i]
p = np.poly1d(z)
plt.subplot(1,2,i+1)
plt.plot(x, y, '.', xp, p(xp), '-');