如何基于包含初始索引和最终索引的2个1D数组对2D numpy数组进行切片

象棋21

我有一个2D的numpy数组,假设它的形状为4x10(4行10列)。我有2个具有初始索引和最终索引的1D数组,所以它们都是20x1。例如,假设

initial = [1, 2, 4, 5]
final = [3, 6, 8, 6]

那我想得到

data[0,1:3]
data[1,2:6]
data[2,4:8]
data[3,5:6]

当然,每个数组的大小都会不同,因此我想将它们存储在列表中。如果要for循环执行,则如下所示:

arrays = []
for i in range(4):
    slice = data[i,initial[i]:final[i]]
    arrays.append(slice)

有没有更有效的方法可以做到这一点?我宁愿避免使用for循环,因为我的实际数据非常庞大。

保罗·C

您可以使用展numpy.splitdata(使用numpy.ndarray.flatten)和修改切片:

sections = np.column_stack([initial, final]).flatten()

sections[::2] += np.arange(len(initial)) * data.shape[1]
sections[1::2] += sections[::2] - np.array(initial)

np.split(data.flatten(), sections)[1::2]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用range / arange函数作为参数对2d numpy数组进行索引/切片

来自分类Dev

Numpy用索引数组对多个2D范围进行切片

来自分类Dev

使用 Numpy 对多维数组进行切片/索引

来自分类Dev

切片并用1d列索引数组填充2d数组

来自分类Dev

对numpy数组的不同行进行不同的切片

来自分类Dev

索引/切片numpy数组的混乱

来自分类Dev

根据条件切片2D numpy数组

来自分类Dev

如何切片numpy数组的子集

来自分类Dev

如何切片numpy数组的子集

来自分类Dev

使用切片的numpy数组索引numpy数组

来自分类Dev

如何通过列索引列表对numpy数组进行切片

来自分类Dev

如何通过列索引列表对numpy数组进行切片

来自分类Dev

使用冒号的numpy数组切片

来自分类Dev

numpy数组中的互补切片

来自分类Dev

取消切片numpy数组

来自分类Dev

用字典切片NumPy数组

来自分类Dev

Numpy ndarray 切片与数组

来自分类Dev

理解numpy数组切片的问题

来自分类Dev

在numpy TypeError中获取数组的元素:无法进行切片索引

来自分类Dev

numpy如何排序数组切片索引?

来自分类Dev

如何在不进行迭代的情况下基于成对的开始/结束索引定义numpy数组的多个切片?

来自分类Dev

基于2D数组的3D numpy切片的平均值

来自分类Dev

如何切片和扩展2D numpy数组?

来自分类Dev

使用索引列表切片n维numpy数组

来自分类Dev

用切片列表索引numpy数组

来自分类Dev

Python Numpy数组整数索引平面切片分配

来自分类Dev

NumPy 切片给出 IndexError:数组的索引太多

来自分类Dev

返回不同的Numpy数组形状以进行类似的值切片

来自分类Dev

从numpy数组创建一组切片,以进行并行化