[英]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.