配列(M、N)があるとします。ここで各 "列"の値NはN台の異なるマシンのデータ記録を表します。また、各「行」Mが、N台のすべてのマシンでデータが記録されたユニークな「タイムスタンプ」を表しているとしましょう。ナンシーアレイ:パディングなしでNansの配列から優先的に順序付けられた値を抽出しますか?
配列(M、N)は、M = 0で最初の「タイムスタンプ」(t0)に対応するように構成され、行M = M(tm)最近のタイムスタンプ記録。
この配列を「AX」としましょう。 AX [0]は、最初の「タイムスタンプ」でN台のマシンの記録データを出力します。 AX [-1]は最新の録音です。
は、ここに私の配列です:
>>AX = np.random.randn(3, 5)
array([[ 0.53826804, -0.9450442 , -0.10279278, 0.47251871, 0.32050493],
[-0.97573464, -0.42359652, -0.00223274, 0.7364234 , 0.83810714],
[-0.07626913, 0.85246932, -0.13736392, -1.39977431, -1.39882156]])
今、何かが間違っていたとのデータがすべての「タイムスタンプ」ですべてのマシンのために一貫して撮影していなかったと想像します。
Create sample numpy array with randomly placed NaNs
>>AX.ravel()[np.random.choice(AX.size, 9, replace=False)] = np.nan
array([[ 0.53826804, -0.9450442 , nan, 0.47251871, nan],
[ nan, nan, nan, 0.7364234 , 0.83810714],
[-0.07626913, nan, nan, nan, nan]])
だが、私が最も最近の値を提供する必要があると仮定しましょう:出力がどのように見えるかの例を作成するために、私は、配列内のランダムな位置にナンを挿入するには、以下のリンクの例を踏襲しました記録されたデータの理想的には、これはAX [-1]を参照するほど簡単です。この特定のケースでは、すべてが壊れてしまったので、私はほとんどデータを持っていません。
>>AX[-1]
array([-0.07626913, nan, nan, nan, nan])
GOAL:
私はどのようなデータが何もないよりはましであると認識するので、私はマシンごとに記録さ最新値を使用したいと思います。この特定のシナリオでは、私ができる最高の値を持つ配列を提供します:AXの
[-0.07626913, -0.9450442, 0.7364234, 0.83810714]
お知らせ欄2には、使用可能なデータがなかったので、私はちょうどそれが出力に含まだスキップ。
np.arraysは非常に直感的ではありません。マニュアルを読んでみると、特殊な関数と変換の量に圧倒されています。
NANのすべてを新しい配列(AY)にフィルター処理し、最後の行AY [-1]を取ることを考えました(これは重要な行ベースの順序を保持すると仮定しています)。 (つまり、最後の「行」を取って、作成することも可能であると仮定すると、
[1,2,3],
[4,5],
[6]
:これは(私はだけではなく、AXの値の便宜のために、ここで整数値を使用しています)の奇妙な形状を持つ配列を作成することになります?)は[6,5,3]を生成し、すべてを完全に混乱させるだろう。最も最近の値が最新の「タイムスタンプ」行の5つのデータポイントのうちの4つのパッドであるため、配列を値で埋め込むことも悪いことです。
np.array構造を使用し、データフレームやパネルを避けながら、かなり痛みを伴わない方法で私が望むものを実現する方法はありますか?
ありがとうございます!
これが本当の独創的なようだ:
last_vals
に非NaN値を排除するために、あなたはnp.isfinite(last_vals)
とインデックス、それをすることができます!私はゆっくりと自分の歩みを自分で歩いて、それぞれの部分を理解するようにします。ここではたくさんのことが起こっています:) –私は「受け入れる」ことを感謝しますが、それはおそらく早すぎました。 stackoverflowの質問に目を留めている賢明なnumpythonistasがあります。あなたが受け入れる前にしばらく待っていれば、さまざまな回答を得る可能性が高くなります。 –
まあ、私はこのサイトではかなり新しく、それが反応を得る動機であるとは気づいていませんでした。人々は受け入れられた回答にコメントし続けますか? –