私は最近、自分の実験のためにデータを分析するために自分自身にpythonを教えてくれました。そういうわけで、私は多くの面で非常に無知です。私は特定のファイルに対して分析を実行させることができましたが、場合によってはそれが故障し、誤ったプログラミングの結果であると想像しています。Pythonを使ってDelta F/Fを計算するには?
現在、3つのnumpy配列を含むファイルをエクスポートします。これらの配列の1つは私のシグナルです(float値は-10から10)。私がしたいのは、この配列内のすべてのデータを先行する値の範囲に正規化することです。 (すなわち、30001stの値は、その前の3000の値から平均値を差し引いたものでなければならず、その差をこの同じ平均(過去3000値)で除算する必要があります。 ALST 30代の私が先行3000valuesを使用する必要があります
を、それはスタンドとして、これは私はそれを動作させることができた方法です:。
が、これは変数photosignal
photosignal = np.array(seg.analogsignals[0], ndmin=1)
に信号を保存します
これは私が得るために使う部分です後で私が同じである別のリストにそれをロック時間なければならないので、以下の30代の移動ウィンドウ
normalizedphotosignal = [(uu-(np.mean(photosignal[uu-3000:uu])))/abs(np.mean(photosignal[uu-3000:uu])) for uu in photosignal[3000:]]
超えるデルタF/Fは、配列を同じ長さを保つために先頭に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ランニング平均)/走行平均
ありがとうalotはあなたが言った移動平均numpyメソッドと一緒にそれを試してみましょう! –
どこで 'i'を使いますか?あなたは 'i-3000:i'を使うのですか? –
@DavidCullen:あなたは正しいです...私は修正するために設定したエラーを修正するのを忘れていました... –