python - 从给定起始索引的一维数组中提取子数组 - Python/NumPy

标签 python arrays numpy

NumPy 数组可以与其他数组一起索引。举例说明:

>>> import numpy as np

>>> arr = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0et ], 'f4')
>>> ids = np.array([0, 2], 'i4')
arr[ids]
array([ 0.,  2.], dtype=float32)

但是如果我想要一个带有索引指向的值加上三个后续元素的多数组怎么办?

>>> arr[ids:(ids+4)]
Traceback (most recent call last):
  File "<console>", line 1, in <module>
IndexError: invalid slice

预期:

array([[0. 1. 2. 3.], [2. 3. 4. 5.]], dtype=float32)

如何实现这一点?

最佳答案

使用broadcasted除了创建所有这些索引然后索引 -

all_idx = ids[:,None]+range(4) # or np.add.outer(ids, range(4))
out = arr[all_idx]

使用np.lib.stride_tricks.as_strided基于strided_app -

strided_app(arr, 4, S=1)[ids]

关于python - 从给定起始索引的一维数组中提取子数组 - Python/NumPy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46025377/

相关文章:

python - 在不改变图像大小的情况下屏蔽 ROI

python - 进行滚动线性回归的有效方法

python - Tox 在一个 repo 克隆中运行良好,但在另一个中运行良好

javascript - 如何从数组的数组中提取值

javascript - 数组上的自定义 .toString() 方法

python - 如何在Python中向量化这个for循环?

python - 使用补丁方法时,出现错误 : "PATCH" not allowed

java - Java 和 Python 中的数据结构及其实现 : Lists, 数组、元组

python - 我应该预分配一个 numpy 数组吗?

python - 有效地找到两个二维 numpy 数组的行交集