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
如何使用跨步
和形状
将平面数据数组视为多维数组。