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

标签 python numpy scipy

我有一个数组数据,其形状为 (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/

相关文章:

python - 将数据列添加到只有一行的 numpy rec 数组中

python - 训练岭回归的 alpha 值

python - `python` 中的加权高斯核密度估计

python - 递归搜索多重嵌套列表并返回整数 : Python

python - numpy 中的聚合时间序列

python - 绘制 NACA 4 系列翼型

python - 使用 scipy.curve_fit 进行全局拟合

python - Jinja 2 从列表中选择项目[n]

python - 数据框中的条件新列

python - 在 OSX 上使用 openMP 支持编译 cython