python - 填充 Numpy 数组的有效方法

标签 python numpy

我正在寻找一种比双 for 循环更有效的方法来填充 2d numpy 数组。我遇到的问题是数组值依赖于其他几个数组。

在下面的代码中,k和d是整数,y和result是数组。任何帮助将不胜感激。

for i in xrange(1,d):
    for j in xrange(k-i-1, k+1):
        result[j][i] = ((x - y[j])/(y[j+i] - y[j]))*result[j,i-1] + ((y[j+i+1]-x)/(y[j+i+1] - y[j+1]))*result[j+1,i-1]

最佳答案

您似乎正在更新您的 result 数组,一次更新一列,使用来自先前更新列的数据。这使得很难对外部循环进行矢量化,我认为你不能这样做,除非你的数据有一些可以被利用的结构。内部循环非常容易向量化:

for i in xrange(1, d):
    j = np.arange(k-i-1, k+1)
    result[j, i] = ((x - y[j]) / (y[j+i] - y[j]) * result[j, i-1] +
                    (y[j+i+1] - x) / (y[j+i+1] - y[j+1]) * result[j+1, i-1])

通过在循环外定义一个 base_j = np.arange(k-d-2, k+1) 数组,然后在循环内使用类似j = base_j[d-i+1:]

关于python - 填充 Numpy 数组的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19478510/

相关文章:

python - 使用 python 打印交替行

Python:使用 .format 方法用列表项填充字符串

python - 使用 'any' 查找字符串是否包含列表的一部分,然后将找到的部分放入变量中?

Python,如何将整数矩阵组合到列表中

python - 在 python 中使用//

numpy - 确定编译器标志的来源

python - 用新实例替换类的实例

python - Django 模型和 View

python - 将切片索引存储为对象

python - 计算 Pandas 系列中相同符号的累积值和顺序值