为了分析实验数据,我最近自学了python。因此,我在很多方面都很无知。我已经设法使我的分析对某些文件有效,但在某些情况下,它崩溃了,我认为这是错误编程的结果。在
目前我导出一个包含3个numpy数组的文件。其中一个数组是我的信号(浮点值从-10到10)。我想做的是将这个数组中的每一个数据规范化为处理它的一系列值。(即,30001值必须减去前面3000个值的平均值,然后将差值除以相同的平均值(前面的3000个值)。我的数据是以100Hz的速率收集的,因此要获得alst 30的标准化,我必须使用前面的3000个值。在
就目前情况来看,我是如何做到这一点的:
这将信号存储到变量photosignalphotosignal = np.array(seg.analogsignals[0], ndmin=1)
这是我用来得到30秒移动窗口上的△F/F的部分
^{pr2}$
下面将3000个值添加到开头,以保持数组的长度不变,因为稍后我必须将其锁定到另一个长度相同的列表中holder =list(range(3000))
normalizedphotosignal = holder + normalizedphotosignal
我注意到,在某些文件中,这段代码给了我一个错误,因为它说“切片”是空的,因此它不能创建一个平均值。在
我想也许有一个更好的方法可以完全避免这个问题。或者这是解决这个问题的正确方法?在
所以我尝试了这个解决方案,但是速度很慢,但是它仍然给我“空切片错误”。
我查看了移动平均线,发现了这个方法:def running_mean(x, N):
cumsum = np.cumsum(np.insert(x, 0, 0))
return (cumsum[N:] - cumsum[:-N]) / N
然而,我很难适应我想要的输出。即(x-运行平均值)/运行平均值