0

いくつかのデータポイントで構成されるデータファイルがあり、特定の順序でプロットしたいと思います。データファイルの例を次に示します。

cop   94.0528    313     441
cpr   225.172    726     747
ent   444.786    926     939
fsh   256.038    743     754
fsp   43.7764    340     356
pbp   343.708    825     834
rho   426.497    858     886
sca   342.431    427     872

私は現在、例を設定した方法でそれらを互いにすぐ下にプロットしています。Pythonスクリプト内のこれらのデータレコードの順序を指定された順序に変更するにはどうすればよいですか?私はすでにこれを配列に加工しようとしました。だから私はします

data=Numpy.genfromtxt(txt)
transformdata.append(2) # cpr to the first slot
transformdata.append(1) # cop to the second slot
outputarray.append(data[transformdata(1)]
outputarray.append(data[transformdata(2)]
pos = range(1,size(outputarray))
scatter(outputarray, pos)    

ただし、これは面倒であり、これを達成するための最良の方法ではありません。NumpyまたはMatplotlibライブラリを使用してこれを行うにはどうすればよいですか?

4

1 に答える 1

0

transformdataそれがのndarrayようであると仮定するとdata、インデックスを作成するトリックを使用して、配列をコピーせずに配列のビューを取得できます。例えば:

>>> x=np.array(zip("abcdef",range(5),np.random.rand(5)),dtype=[('',"|S1"),('',int),('',float)])
>>> print x
[('a', 0, 0.9818028495949546) ('b', 1, 0.08931155317859962)
 ('c', 2, 0.018796963462246796) ('d', 3, 0.275603618214155)
 ('e', 4, 0.6328806434997251)]
>>> y = x[[1,3,0,2,4]]
>>> print y
[('b', 1, 0.08931155317859962) ('d', 3, 0.275603618214155)
 ('a', 0, 0.9818028495949546) ('c', 2, 0.018796963462246796)
 ('e', 4, 0.6328806434997251)]

ここで重要なのは、必要な順序で必要なインデックスのリストx[[1,3,0,2,4]]を使用してインデックスを作成することです。

于 2012-08-20T10:46:53.383 に答える