Python数组最大值:Python:在numpy数组中查找最大值和不连续性

关于Python数组最大值的问题,在how to tell if there is a jump discontinuity中经常遇到, 我有一个与在numpy数组中查找最大值或更精确的不连续性相关的问题?我的示例数据看起来像这样

我有一个与在numpy数组中查找最大值或更精确的不连续性相关的问题?我的示例数据看起来像这样

a = np.array([3,4,5,8,7,6,5,4,1])

一般来说,我对数据中的每个最大值 / 跳跃都感兴趣。对于 arraya,我想检测 8,因为它是最大值 (左侧的增长数字和右侧的递减数字) 和 4 的值,因为数据在该值之后下降。到目前为止,我已经使用scipy.signal.argrelextremanp.greater来检测最大值,但我不能连续检测这些数据。

4

让我们试试这个:

threshold = 1
a = np.array([3, 4, 5, 8, 7, 6, 5, 4, 1])
discontinuities_idx = np.where(abs(np.diff(a))>threshold)[0] + 1

np.diff(a)给出了a的每个组件之间的区别:

>>> array([ 1,  1,  3, -1, -1, -1, -1, -3])

从那时起,将应用np.where(abs(np.diff(a))>threshold)[0]来查找检测到的不连续性的位置(根据绝对差,高于用户指定的threshold)。最后,如果需要,您可以添加+1以补偿n=1差 idx(请参阅np.diffkwargs),具体取决于您需要的不连续性。

>>> discontinuities_idx
>>> array([3, 8])
>>> a[discontinuities_idx]
>>> array([8, 1])
1

这听起来像数学数学分析,你需要定义一些条件,如a'(x)>0a'(x)<0

a = np.array([3,4,5,8,7,8,6,5,4,9,2,9,9,7])
mask1 = np.diff(a) > 0
mask2 = np.diff(a) < 0
>>> np.flatnonzero(mask1[:-1] & mask2[1:]) + 1
array([3, 5, 9], dtype=int64)

它返回满足最大值的项目的索引。

0

您可以尝试以下操作:

import numpy as np
import math
a = np.array([3,4,5,8,7,6,5,4,1])
MaxJump = np.diff(a)
print(MaxJump)
print(len(MaxJump))
MaxJump1 = []
for i in range (len(MaxJump)):
    MaxJump1.append(math.fabs(MaxJump[i]))
print(MaxJump1)
MaxJump3 = np.max(MaxJump1)
print(MaxJump3)

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(795)
Php如何实现静态化:使用PHP实现OWASP ZAP自动化
上一篇
Cba f go:在Go中 是否有类似的功能 如Python中的“f-string”
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(76条)