首页 > 解决方案 > 用 numpy 快速切片

问题描述

在我的应用程序中Ajj以扁平的 1-dimnumpy数组的形式给出。jj没有严格的规则模式。我们可以通过以下方式解决jj切片A

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]

这个例子不起作用,但也许还有另一种精益方式。切片命令快速且有吸引力。有没有办法将jjnumpy-array 转换为 aslice(jj)以提高效率?

我的背景是在具有可变系数的计算流体动力学中建立重复的大型系统矩阵。感谢您的一些提示!

标签: pythonnumpyslice

解决方案


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

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


推荐阅读