从具有给定步长/步长的numpy数组中提取子数组

从具有给定步长/步长的numpy数组中提取子数组

假设我有一个PythonNumpy数组a.

a = numpy.array([1,2,3,4,5,6,7,8,9,10,11])

我想从这个长度为5的步长为3的数组中创建一个子序列矩阵。因此,结果矩阵如下所示:

numpy.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])

实现这一目标的一种可能方法是使用for-循环。

result_matrix = np.zeros((3, 5))for i in range(0, len(a), 3):
  result_matrix[i] = a[i:i+5]

在Numpy中有更干净的方法来实现这一点吗?


12345678_0001
浏览 2172回答 3
3回答

阿晨1998

你是否也得到了一个疯狂的结果strided_app(np.array([np.arange(6)]),3,1)?我在Anaconda中使用python3.6和numpy 1.13.1。

小怪兽爱吃肉

我用过as_strided以前却发现它造成了非常严重的内存泄漏。这不是小型数组的问题,但即使在服务器上使用64 GB的RAM,我的python程序也会引发MemoryError。强烈建议使用broadcasting_app方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python