【发布时间】:2021-09-23 15:23:34
【问题描述】:
我有几个 for 循环,我想对其进行矢量化以提高性能。它们在 1 x N 矩阵上运行。
for y in range(1, len(array[0]) + 1):
array[0, y - 1] = np.floor(np.nanmean(otherArray[0, ((y-1)*3):((y-1)*3+3)]))
for i in range(len(array[0])):
array[0, int((i-1)*L+1)] = otherArray[0, i]
这些操作依赖于由 for 循环给出的数组索引。在使用 numpy.vectorize 时有什么方法可以访问索引,以便我可以将它们重写为向量化函数?
【问题讨论】:
-
第二次迭代
i可能会替换为I = np.arange(len(array[0]))并使用它进行一些计算。但是对于第一个循环中的切片,没有办法用数组替换迭代的y。在a:b切片中,a和b必须是标量。 -
仅供参考:Python range(n) 从 0 开始,在 n-1 结束。 numpy 数组索引也是如此。使用 +1 为自己省去麻烦。
标签: python numpy vector vectorization