用numpy快速切片

时间:2019-01-25 09:40:05

标签: python numpy slice

在我的应用程序中,A和jj被给出为平坦的1维numpy数组。 jj没有严格的规则模式。我们可以通过以下方式获得A的切片jj:

A = np.arange(10)
jj = np.array([3,5,6])
A[jj]

这被称为“花式切片”,并且被告知速度很慢。有没有办法通过类似

的方法来加快访问速度
A = np.arange(10)
jj = np.array([3,5,6])
ii = slice(jj)
A[ii]

此示例不起作用,但是也许还有另一种精益方法。 slice命令是fast and attractive。有没有办法将jj-numpy-array转换为slice(jj)并保持效率?

(Contex是:在具有可变系数的计算流体动力学中构建重复的大系统矩阵)。感谢您的提示!

1 个答案:

答案 0 :(得分:3)

不幸的是,由于您没有常规模式,因​​此没有比花哨的索引更好的方法了。这是唯一的方法。

之所以变慢,是因为切片索引不会复制该值,因为您可以创建具有所需步幅的视图。对于不规则模式,您只能复制数据。因此,它将变慢。