3

私のコード例はpythonですが、一般的な原則について質問しています。

時間と値のペアのデータ セットがある場合、これらを 2D 配列として保存するか、タプルのリストとして保存する必要がありますか? たとえば、次のデータがある場合:

v=[1,4,4,4,23,4]
t=[1,2,3,4,5,6]

一般的には、次のように保存する方が良いですか。

data=[v,t]

またはタプルのリストとして:

data=[(1,1),(4,2)(4,3)...]

これを行う「標準的な」方法はありますか?

4

4 に答える 4

4

Python で速度が最大の懸念事項である場合は、Numpy を見てください。

一般に、データを自然かつ簡単に処理できるデータ構造を選択する必要があります。速度については、機能することを確認してから心配してください。

簡単なデータ構造については、タプルのリストはどうですか:

v=[1,4,4,4,23,4]
t=[1,2,3,4,5,6]

data=[(1,1),(4,2)(4,3)...]

次に、次のように解凍できます。

v,t=data[1]
#v,t are 4,2
于 2011-04-11T15:28:50.477 に答える
2

集約配列コンテナーは、おそらく最良の選択です。タイム ポイントが一定の間隔で配置されていないと仮定すると (したがって、単にインデックスを使用するのではなく、それを追跡する必要があります)、これにより、次のようにデータ セット全体のスライスを取得できます。

import numpy as np
v=[1,4,4,4,23,4]
t=[1,2,3,4,5,6]

data = np.array([v,t])

次に、それをスライスして、データのサブセットを簡単に取得できます。

data[:,2:4]  #array([[4, 4],[3, 4]])

ii = [1,2,5] # Fancy indexing
data[:,ii] # array([[4, 4, 4],
           #        [2, 3, 6]])
于 2011-04-11T15:29:14.987 に答える
1

辞書を引いてみませんか?他の言語では、これはハッシュマップ、ハッシュテーブル、連想配列、または同じことを意味する他の用語として知られている場合があります。もちろん、データへのアクセス方法によって異なります。

それ以外の:

v=[1,4,4,4,23,4]
t=[1,2,3,4,5,6]

あなたが持っているでしょう:

v_with_t_as_key = {1:1,  # excuse the name...
                   2:4, 
                   3:4, 
                   4:4, 
                   5:23, 
                   6:4} 

これは Python のかなり標準的な構造ですが、順序が重要な場合は、 collections で順序付けされた辞書参照することをお勧めします。

于 2011-04-11T15:26:41.133 に答える
0

探索とプロトタイピングでは、列のリスト/ジャグ配列として格納する方が便利であることがわかりました。最初の列は観測インデックスで、その後の各列は変数です。

data=[(1,2,3,4,5,6),(1,4,4,4,23,4)]

ほとんどの場合、多くの変数を含む多くの観測をロードしてから、それらの変数の 1 つ以上の並べ替え、書式設定、または表示を実行したり、列をパラメーターとして 2 つのデータ セットを結合したりすることさえあります。観測のサブセットを引き出す必要がある場合は、非常にまれです。そうしたとしても、観測インデックスの列を指定してデータのサブセットを返す関数を使用する方が便利です。

そうは言っても、関数を使用して、ジャグ配列を 2 次元配列に変換したり、2 次元配列を転置したりします。

于 2012-11-03T16:13:16.457 に答える