我有一个数组数据,其形状为 (922, 6) 和 trgt,它是一维长时间序列。 data[0] 具有开始索引,而 data[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.])
这些是索引处的值,但不是子集。我试试
trgt[tuple(data[:,0:2][0].astype(int))]
>>> *** IndexError: invalid index
如何获取子集?
最佳答案
这看起来很奇怪:
b = data[:, 0:2][0]
因为对于 NumPy 数组,它与:
b = data[0, :2]
即数组第一行的前两列。如果 data
是一个二维数组,您将得到一个维度为 (2,) 的数组。它可以直接用于索引一维向量:
trgt[b]
无需将其转换为切片或元组。
更新:随着问题的更新描述,第一列似乎包含开始索引,第二列包含结束索引。那么自然而然的事情就是创建一个数组列表。二维数组不是一种好的输出格式,因为每行的列数应该相同。
在这种情况下,单行即可。
lst = [ trgt[row[0]:row[1]] for row in data ]
关于python - 用另一个数组的子集切片 1d numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25399002/