我有一个数组数据,其形状(922,6)和trgt是一个长1d的时间序列。 data [0]有起始索引和数据[1]我需要从trgt切片的子集的结束索引。
我试试
trgt[data[:,0:2][0]]
>>> *** IndexError: arrays used as indices must be of integer (or boolean) type
其中
data[:,0:2][0]
>>> array([0., 100.])
所以我试试
trgt[data[:,0:2][0].astype(int)]
>>> array([9909., 9989.])
这些是索引的VALUES而不是子集。我试试
trgt[tuple(data[:,0:2][0].astype(int))]
>>> *** IndexError: invalid index
我怎样才能获得子集?
答案 0 :(得分:4)
这看起来很奇怪:
b = data[:, 0:2][0]
因为使用NumPy数组它与:
相同b = data[0, :2]
即。数组第一行的两个第一列。如果data
是二维数组,您将得到一个维度为(2,)的数组。它可以直接用于索引1d向量:
trgt[b]
无需将其转换为切片或元组。
更新:根据问题的更新说明,第一列似乎包含起始索引,第二列包含结束索引。然后,自然要做的是创建一个数组列表。 2d数组不是一个好的输出格式,因为每列的列数应该相同。
在这种情况下,单行会做。
lst = [ trgt[row[0]:row[1]] for row in data ]