在我的应用程序中,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是:在具有可变系数的计算流体动力学中构建重复的大系统矩阵)。感谢您的提示!
答案 0 :(得分:3)
不幸的是,由于您没有常规模式,因此没有比花哨的索引更好的方法了。这是唯一的方法。
之所以变慢,是因为切片索引不会复制该值,因为您可以创建具有所需步幅的视图。对于不规则模式,您只能复制数据。因此,它将变慢。