python - Numpy-native "nested-for-like"结构

标签 python arrays performance numpy vectorization

我想在 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 - Numpy-native "nested-for-like"结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31427334/

相关文章:

arrays - 从数组的数组中获取共同的元素

python - 排除除一列之外的所有值超过 100 的行

php - 开发人员自定义和添加动态页面和内容的最佳开源 CMS

python - 将数据加载到 Catboost Pool 对象中

python - 在 numpy 二维数组的每一行中放置一个的快速方法

java - 数组索引问题

python - 使用不同区域设置设置百分比格式(逗号为小数)

r - 为什么 R(在我的示例中)处理日期/日期时间非常慢?

javascript - Backbone.js 内部 triggerEvents 函数。它是如何优化的?

ios - 使用应用程序测试数据库的下载速度和最大下载速度