【发布时间】:2017-09-07 08:05:24
【问题描述】:
我有一个 2D python 数组,我想以一种奇怪的方式切片 - 我想要一个恒定宽度的切片,从每一行的不同位置开始。如果可能的话,我想以矢量化的方式做到这一点。
例如我有数组A=np.array([range(5), range(5)]),看起来像
array([[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]])
我想将其切片如下:每行 2 个元素,从位置 0 和 3 开始。起始位置存储在 b=np.array([0,3]) 中。因此,所需的输出是:np.array([[0,1],[3,4]]) 即
array([[0, 1],
[3, 4]])
我试图得到这个结果的显而易见的事情是A[:,b:b+2],但这不起作用,我找不到任何可以的结果。
速度很重要,因为这将在循环中对较大的数组进行操作,并且我不想成为代码其他部分的瓶颈。
【问题讨论】:
-
numpy.lib.stride_tricks里有些东西……更不用说某处的骗子了…… -
请提供Minimal, Complete, and Verifiable example,以便我们更轻松地回答您的问题,而无需自己做很多额外的工作:)
标签: python performance numpy