python - 比较 numpy 数组中的相邻值

标签 python arrays numpy

我有一个 Numpy 一维数据数组,像这样

a = [1.9, 2.3, 2.1, 2.5, 2.7, 3.0, 3.3, 3.2, 3.1]

我想创建一个新数组,其中的值由相邻值中的较大者组成。对于上面的示例,输出将是:

b = [2.3, 2.3, 2.5, 2.7, 3.0, 3.3, 3.3, 3.2]

我可以通过遍历输入数组、比较相邻值来做到这一点,例如:

import numpy as np

a = np.array([1.9, 2.3, 2.1, 2.5, 2.7, 3.0, 3.3, 3.2, 3.1])
b = np.zeros(len(a)-1)

for i in range(len(a)-1):
    if (a[i] > a[i+1]):
        b[i] = a[i]
    else:
        b[i] = a[i+1]

但我想以更优雅的“pythonic”矢量化方式来做到这一点。我已经搜索并阅读了有关 np.zip、np.where、np.diff 等的信息,但还没有找到执行此操作的方法(或者更可能的是,我不明白什么是可能的)。有什么建议吗?

最佳答案

您需要 a[1:]a[:-1] 的元素最大值:

>>> a
array([ 1.9,  2.3,  2.1,  2.5,  2.7,  3. ,  3.3,  3.2,  3.1])
>>> a[1:]
array([ 2.3,  2.1,  2.5,  2.7,  3. ,  3.3,  3.2,  3.1])
>>> a[:-1]
array([ 1.9,  2.3,  2.1,  2.5,  2.7,  3. ,  3.3,  3.2])
>>> np.maximum(a[1:], a[:-1])
array([ 2.3,  2.3,  2.5,  2.7,  3. ,  3.3,  3.3,  3.2])

关于python - 比较 numpy 数组中的相邻值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38449670/

相关文章:

Python3如何在Pandas Dataframe上实现滑动窗口计数

php - 序列化数组时,不会序列化最后一个数字

python - 将数据帧列分解为多行(TypeError : Cannot cast array data from dtype ('int64' ) to dtype ('int32' ))

python - 从 NumPy 中的不均匀采样数据生成均匀采样数组

python - Matplotlib 的 ticklabel_format(style ='plain' ) 对于对数轴被忽略或失败,但对于线性轴有效

Python 跟踪和条件跳转

arrays - 索引 MongoDB 数组位置查询

java - 如何将 NSString 转换为字节数组

python - 两个大型数据集的最快迭代合并

python - PyQt 5 : How to maintain relative widget size when expanding a window