Numpy-native "nested-for-like" 结构
Numpy-native "nested-for-like" structure
我想在 python 中生成一个 2×N 数组以用于 scipy.optimize.curve_fit
。
我有一个函数,两个自变量存储为一维数组,数据存储在二维数组中。 curve_fit
要求将数据展平,这在 data.ravel()
中很容易。
但是,这是我用来生成 2xN 纵坐标值数组的技巧:
ordinate = np.array([[l,t] for l in length for t in time]).T
有效,但速度较慢。什么是(矢量化?)更快的方法?
如果我答对了问题,您希望从存储为一维数组的两个自变量中形成二维网格。因此,同样,您可以使用 np.meshgrid
-
time2D,length2D = np.meshgrid(time,length)
ordinate_vectorized = np.row_stack((length2D.ravel(),time2D.ravel()))
样本运行-
In [149]: time
Out[149]: array([7, 2, 1, 9, 6])
In [150]: length
Out[150]: array([3, 5])
In [151]: ordinate = np.array([[l,t] for l in length for t in time]).T
In [152]: ordinate
Out[152]:
array([[3, 3, 3, 3, 3, 5, 5, 5, 5, 5],
[7, 2, 1, 9, 6, 7, 2, 1, 9, 6]])
In [153]: time2D,length2D = np.meshgrid(time,length)
...: ordinate_vectorized = np.row_stack((length2D.ravel(),time2D.ravel()))
...:
In [154]: ordinate_vectorized
Out[154]:
array([[3, 3, 3, 3, 3, 5, 5, 5, 5, 5],
[7, 2, 1, 9, 6, 7, 2, 1, 9, 6]])
我想在 python 中生成一个 2×N 数组以用于 scipy.optimize.curve_fit
。
我有一个函数,两个自变量存储为一维数组,数据存储在二维数组中。 curve_fit
要求将数据展平,这在 data.ravel()
中很容易。
但是,这是我用来生成 2xN 纵坐标值数组的技巧:
ordinate = np.array([[l,t] for l in length for t in time]).T
有效,但速度较慢。什么是(矢量化?)更快的方法?
如果我答对了问题,您希望从存储为一维数组的两个自变量中形成二维网格。因此,同样,您可以使用 np.meshgrid
-
time2D,length2D = np.meshgrid(time,length)
ordinate_vectorized = np.row_stack((length2D.ravel(),time2D.ravel()))
样本运行-
In [149]: time
Out[149]: array([7, 2, 1, 9, 6])
In [150]: length
Out[150]: array([3, 5])
In [151]: ordinate = np.array([[l,t] for l in length for t in time]).T
In [152]: ordinate
Out[152]:
array([[3, 3, 3, 3, 3, 5, 5, 5, 5, 5],
[7, 2, 1, 9, 6, 7, 2, 1, 9, 6]])
In [153]: time2D,length2D = np.meshgrid(time,length)
...: ordinate_vectorized = np.row_stack((length2D.ravel(),time2D.ravel()))
...:
In [154]: ordinate_vectorized
Out[154]:
array([[3, 3, 3, 3, 3, 5, 5, 5, 5, 5],
[7, 2, 1, 9, 6, 7, 2, 1, 9, 6]])