我最近「教」自己python爲了分析我的實驗數據。因此,我在很多方面都很無知。我已經設法對某些文件進行分析,但在某些情況下會崩潰,我認爲這是編程錯誤的結果。如何使用python來計算Delta F/F?
目前我導出一個包含3個numpy數組的文件。其中一個數組是我的信號(浮點值從-10到10)。我想要做的就是將此數組中的每個數據規範化爲其前面的一系列值。 (即第30001個值必須具有從其中減去前3000個值的平均值,然後該差值必須除以這個相同的平均值(前面的3000個值)。以100Hz的速率收集我的數據,從而得到歸一化在30年代ALST我必須使用前述3000values
因爲它忍受這就是我是如何設法使其工作:
這個存儲信號到變量photosignal
photosignal = np.array(seg.analogsignals[0], ndmin=1)
現在這個我用來獲取的部分增量F/F超過30歲的
normalizedphotosignal = [(uu-(np.mean(photosignal[uu-3000:uu])))/abs(np.mean(photosignal[uu-3000:uu])) for uu in photosignal[3000:]]
以下的移動窗口增加了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運行平均值)/運行平均值
非常感謝你將會和你提到的移動平均numpy方法一起嘗試! –
你在哪裏使用'i'?你的意思是使用'i-3000:i'嗎? –
@DavidCullen:你是對的..我忘了解決我要解決的錯誤... –