python - 对numpy数组中的每个第n个条目进行二次采样

标签 python arrays numpy

我是 numpy 的初学者,我正在尝试从一个长的 numpy 数组中提取一些数据。我需要做的是从数组中定义的位置开始,然后从该位置对每个第 n 个数据点进行二次采样,直到数组结束。

如果我有的话

a = [1,2,3,4,1,2,3,4,1,2,3,4....] 

我想从 a[1] 开始对其进行二次采样,然后从那里每隔四个点采样一次,以产生类似

b = [2,2,2.....]

最佳答案

您可以使用 numpy's slicing , 只需 start:stop:step.

>>> xs
array([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4])
>>> xs[1::4]
array([2, 2, 2])

这会创建原始数据的 View ,因此它是恒定时间。它还将反射(reflect)对原始数组的更改并将整个原始数组保留在内存中:

>>> a
array([1, 2, 3, 4, 5])
>>> b = a[::2]         # O(1), constant time
>>> b[:] = 0           # modifying the view changes original array
>>> a                  # original array is modified
array([0, 2, 0, 4, 0])

所以如果以上任何一个有问题,你可以明确地制作一个副本:

>>> a
array([1, 2, 3, 4, 5])
>>> b = a[::2].copy()  # explicit copy, O(n)
>>> b[:] = 0           # modifying the copy
>>> a                  # original is intact
array([1, 2, 3, 4, 5])

这不是恒定时间,但结果与原始数组无关。该副本在内存中也是连续的,这可以使其上的某些操作更快。

关于python - 对numpy数组中的每个第n个条目进行二次采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25876640/

相关文章:

Python npy文件如何访问变量

python - 图像直方图的高斯混合模型

javascript - javascript中数组排序方法的困惑点

python - 列表到混合维度矩阵

python - 无法弄清楚如何清除随机森林中的 NaN

Python Subversion 包装器库

python - 将 pandas DataFrame 转换为没有额外列的记录数组

php - 在查询的 while 循环中创建关联数组

c++ - 从 2 个单独的数组中删除重复元素

python - 确保 groupby 输出类型