繁体   English   中英

将一维numpy数组与另一个数组的子集切片

[英]Slicing 1d numpy array with subset of another array

我有一个形状为(922,6)和trgt的数组数据,它是一个较长的一维时间序列。 我需要从trgt中分割的子集的data [0]具有开始索引,而data [1]具有结束索引。

我尝试

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]

无需将其转换为切片或元组。

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

在那种情况下,单线便可以。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM