- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我做了一个实验,我让一个 python 程序运行了很长时间,在那段时间里,我对一些数量随时间进行了多次测量。每次测量都由 1 到 3 秒之间的某个值分隔,使用的时间步长远小于该值……比如 0.01 秒。一个这样的例子,即使你只取 y 轴可能看起来像:
[...0,1,-1,4,1,0,0,2,3,1,0,-1,2,3,5,7,8,17,21, 8,3,1,0,0,-2,-17,-20,-10,-3,3,1,0,-2,-1,1,0,0,1,-1,0, 0,2,0...]
这里我们有一段时间的不活动,然后是急剧上升、下降、在 0 附近短暂停顿、急剧下降、急剧上升并再次稳定在 0 附近。这些点表示这是一长串数据的一部分两个方向。整个数据集中将有许多这样的事件,长度不同,由低幅度区域分隔。
我希望本质上形成一个包含“n”个array
(tuple
?)的数组,其长度各不相同,只捕获事件,以便稍后我可以单独分析它们。我不能纯粹通过 np.absolute()
类型的阈值来分隔,因为在给定事件中偶尔会有接近零值的小区域,例如上面的示例。除此之外,在测量之间可能偶尔会出现幅度大但持续时间短的信号。
理想情况下,上面的示例最终会在平坦区域的两侧左右有几个元素。
[0,-1,2,3,5,7,8,17,21,8,3,1,0,0,-2,-17,-20,-10,-3 ,3,1,0,-2,-1]
我在想:
输入:
[0,1,0,0,-1,4,8,22,16,7,2,1,0,-1,-17,-20,-6,-1,0 ,1,0,2,1,0,8,-7,-1,0,0,1,0,1,-1,-17,-22,-40,16,1,3,14,17 ,19,8,2,0,1,3,2,3,1,0,0,-2,1,0,0,-1,22,4,0,-1,0]
根据数量级低于 2 的一些连续值进行拆分。
[[-1,4,8,22,16,7,2,1,0,-1,-17,-20,-6,-1],[8,-7,- 1,0],[-1,-17,-22,-40,16,1,3,14,17,19,8,2,0],[1,22,4,]]
就像这张图:
如果子数组长度小于 10,则删除:
[[-1,4,8,22,16,7,2,1,0,-1,-17,-20,-6,-1],[-1,-17, -22,-40,16,1,3,14,17,19,8,2,0]]
这是处理它的好方法吗?第一步也让我有点困惑。我还需要在事件中保留那些小的低强度区域。
重新编辑!我将比较两个信号,每个信号都作为时间的函数进行测量,因此它们将被压缩到一个元组列表中。
最佳答案
这是我的两分钱,基于指数平滑。
import itertools
A=np.array([0,1,0,0,-1,4,8,22,16,7,2,1,0,-1,-17,-20,-6,-1,0,1,0,2,1,0,8,-7,-1,0,0,1,0,1,-1,-17,-22,-40,16,1,3,14,17,19,8,2,0,1,3,2,3,1,0,0,-2,1,0,0,-1,22,4,0,-1,0])
B=np.hstack(([0,0],A,[0,0]))
B=np.asanyarray(zip(*[B[i:] for i in range(5)]))
C=(B*[0.25,0.5,1,0.5,0.25]).mean(axis=1) #C is the 5-element sliding windows exponentially smoothed signal
D=[]
for item in itertools.groupby(enumerate(C), lambda x: abs(x[1])>1.5):
if item[0]:
D.append(list(item[1])) #Get the indices where the signal are of magnitude >2. Change 1.5 to control the behavior.
E=[D[0]]
for item in D[1:]:
if (item[0][0]-E[-1][-1][0]) <5: #Merge interesting regions if they are 5 or less indices apart. Change 5 to control the behavior.
E[-1]=E[-1]+item
else:
E.append(item)
print [(item[0][0], item[-1][0]) for item in E]
[A[item[0][0]: item[-1][0]] for item in E if (item[-1][0]-item[0][0])>9] #Filter out the interesting regions <10 in length.
关于python - 在数组中找到几个感兴趣的区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22441259/
我有一个与 Radon 变换相关的任务,其中包含一个使用 DFT 重采样的子任务。 让我们考虑具有 515 像素长度的非周期性离散化信号(图 1)(例如像素串)。在我的重采样实现中包含以下步骤: 循环
我是一名优秀的程序员,十分优秀!