用另一个数组的子集切片1d numpy数组

2024-04-18 23:13:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数组数据,它有shape(922,6)和trgt,它是一个长的1d时间序列。data[0]有起始索引,data[1]有我需要从trgt切片的子集的结束索引。在

我尽力了

trgt[data[:,0:2][0]]
>>> *** IndexError: arrays used as indices must be of integer (or boolean) type

在哪里

^{pr2}$

所以我试着

trgt[data[:,0:2][0].astype(int)]
>>> array([9909., 9989.])

这些是索引处的值,但不是子集。我尽力了

trgt[tuple(data[:,0:2][0].astype(int))]
>>> *** IndexError: invalid index

如何获得子集?在


Tags: 数据dataas时间切片序列数组子集
1条回答
网友
1楼 · 发布于 2024-04-18 23:13:32

这看起来很奇怪:

b = data[:, 0:2][0]

因为对于NumPy数组,它与:

^{pr2}$

即数组第一行的前两列。如果data是一个二维数组,那么将得到一个维数为(2,)的数组。它可以直接用于索引一维向量:

trgt[b]

不需要将其转换为切片或元组。在

更新:随着问题描述的更新,似乎第一列包含开始索引,第二列包含结束索引。然后自然要做的是创建一个数组列表。2d数组不是一种好的输出格式,因为每行的列数应该相同。在

那样的话,一条线就行了。在

lst = [ trgt[row[0]:row[1]] for row in data ]

相关问题 更多 >