Python 用numpy快速切片

Python 用numpy快速切片,python,numpy,slice,Python,Numpy,Slice,在我的应用程序中,A和jj被表示为平坦的一维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命令是。有没有办法将

在我的应用程序中,
A
jj
被表示为平坦的一维
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命令是。有没有办法将
jj
numpy数组强制转换为
slice(jj)
,从而提高效率


我的背景是在变系数计算流体力学中建立一个大系统矩阵。谢谢你的提示

不幸的是,由于您没有一个规则的模式,没有比花式索引更好的方法了。这是唯一的办法


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

不幸的是,由于您没有一个规则的模式,没有比花式索引更好的方法了。这是唯一的办法


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

python
切片有3个值-开始、停止、步骤。如果您可以使用
np.arange
range
调用生成
jj
,则可以将其转换为
切片。但是要了解切片的相对速度,您必须了解
视图
副本
之间的区别,并最终了解
numpy
如何使用
跨步
形状
将平面数据数组视为多维数组。python
切片
有3个值-开始、停止、,步骤。如果您可以使用
np.arange
range
调用生成
jj
,则可以将其转换为
片段
。但要了解切片的相对速度,您必须了解
视图
副本
之间的区别,并最终了解
numpy
如何使用
跨步
形状
将平面数据数组视为多维数组。