私が配列周期に対して同じ値を持つ値がフリーズインデックスを特定する必要があり、いくつかの浮動小数点の配列を有します。
例
x = np.linspace(0, 30, 1000)
y1 = np.sin(x)
y2 = np.sin(x)
# Introduce some errors!
y2[ (x>5)&(x<=8) ] = -0.2
y2[ (x>15)&(x<=16) ] = -1
y2[ (x>16)&(x<17) ] = 1
y1
とy2
次のようになります。
そして、私はそれらの水平線がどこにあるか知りたいです。
私は
ループしようとしている:私は
for
前に、ウィンドウの長さを定義することができます...しかし、それはのように不器用な感じもちろんerror = np.zeros_like(y2) for i in range(1,y2.shape[-1]-1): if y2[i-1] == y2[i] == y2[i+1]: error[i-1] = 1 error[i] = 1 error[i+1] = 1
を私はいくつかのネストされたループを、列と期間ごとに用意しています。
np.diff
→ここでの問題は、派生物が単独で0であることがあることです。また、信号が非常にゆっくり(温度)変化するので、ループ内の隣接する(ゼロ)値を再度チェックすることになります。私はいくつかのインデックス作成を探し始めました:
y2[ where(y2==previous(y2) & y2 == next(y2) ]
、これまで成功していません。これは今私が試しているもので、pandas.DataFrame
です。
私は水平線が表示され、インデックスのいずれかを持ちたい、または多分np.nan
でそれらを置き換えます。私はまた、ウィンドウの幅(ほとんどの場合、最終的に約10の値になります)で少し再生することができる必要があります。
アイデア?
コンテキスト
私が実際に持っていることは、私は記録時間のタイムスタンプと一緒に浮動小数点値を取得した温度測定とpandas.DataFrame
、です。時にはエラーが "フリーズ"していると測定の代わりに直線を与える。ときにはそれが最後に繰り返された測定であることもありますが、時にはそれは単なるランダムな値です。各センサーが故障したときを知る必要があります。もちろん、失敗の持続時間は毎回異なります。各信号の長さは約30,000エレメントです。
使用方法:python 3.5.2 numpy 1.11.1 pandas 0.18。1
ような何かを行うことができませんか?これは公差パラメータ 'rtol'を持っています:https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.isclose.html – EdChum
誤った値はまったく同じです、' isclose() '多くの偽陽性を投げるだろう。 – Luis
質問には関係ありません。FYI: 'y2 [np.ma.masked_where((x> 5)&(x <= 8)、y2).mask] = -0.2'は' y2 [ > 5)&(x≦8)] = - 0.2 'である。 –