2017-03-02 20 views
-1

私は3つの.txtファイルを持っており、numpy配列にすることができました。興味がある場合、これらのファイルはAdvanced Composition Experiment(ACE)のデータでLevel 2です。特定のファイルはMAGセクションとSWEPAMセクションにあり、平均はそれぞれ16秒と64秒です。ナッツ殻のデータは、インバウンド粒子場のz成分磁場、面積当たりのカウントの測定による成分、およびその速度を表す。現在、研究の焦点はインバウンド水素ですが、私は脱走します。私は読んで保存したファイルを(だけでなく、すべてのエラーを修正する)ために使用する以下のようにコードが下方に設けられている。これらの配列内に、私は第二千二十四位置にのみ第千三百四十九位置に特に興味を持っています、しかしnumpy配列の選択を空の配列配列に追加する方法

Bz = np.loadtxt(r"/home/ary/Desktop/Arya/Project/Data/AC/MAG/ACE_MAG_Data_SEPT_18_2015.txt", dtype = bytes).astype(float) 
SWEPAM_HV = np.loadtxt(r"/home/ary/Desktop/Arya/Project/Data/ACE/SWEPAM/Proton_Density/ACE_SWEPAM_H_Density_20150918.txt", dtype = bytes).astype(float) 
SWEPAM_HD = np.loadtxt(r"/home/ary/Desktop/Arya/Project/Data/ACE/SWEPAM/Proton_Speed/ACE_SWEPAM_H_Velocity_20150918.txt",dtype = bytes).astype(float) 

Bz = np.ma.masked_array(Bz, Bz <= -999, fill_value = 0) 
SWEPAM_HD = np.ma.masked_array(SWEPAM_HD, SWEPAM_HD <= -999, fill_value = 0) 
SWEPAM_HV = np.ma.masked_array(SWEPAM_HV, SWEPAM_HV <= -999, fill_value = 0) 

Mag_time = np.arange(0,86400, 16, dtype = float) 
SWEPAM_time = np.arange(0,86400,64, dtype = float) 

を。これらの数字は、これらの2つのポイントの間に起こった異常の調査のために興味深いものです。だから私は次のことが私を成功に導くだろうと思った。それがないと多くのバリエーションも失敗しました。私ができることを(私は素数のためnp.empty(0)を試したし、それは私のために動作させることができなかった)私は空の配列を作ることによってこれを考え出した

Mag_time_prime = np.array([]) 
Bz_prime = np.array([]) 
for i in range(1349,2024): 
    append(Mag_time_prime,Mag_time[i]).astype(float) 
    append(Bz_prime,Bz[i]).astype(float) 
print(Mag_time_prime.shape) 
print(Bz_prime.shape) 

:私はあなたに私が今持っている最新のスクリプトを提示しますforループを作成してi_thの位置をBzMag_timeから指定された範囲内の空の 'プライム'配列に追加してください。しかし、 'プライム'配列は空の配列を連続的に突き出しています。だから私の質問、どこが間違ってしまったのですか?

+0

** 'numpy.append' **を使用しないでください。追加する必要がある場合は、リストを使用します。配列の追加を使用する必要がある場合は、文書化されているように使用してください。 – hpaulj

+0

'numpy.append'をどのように使っていないのですか?ドキュメントには、追加するリストの最初の位置と、そのリストに追加する値の2番目の位置が記載されています。追加したいリストは素数の1つで、それに追加したい値はそれぞれの配列のi番目の位置です。 – anabstudent

+1

しかし、 'np.append'は2つの配列を連結した値を返します。 'alist.append()'は 'alist'(in-place)を変更します。それは私がそれを使わないと言う大きな理由です。人々はそれを誤ってリストのように使用します。 – hpaulj

答えて

0

一覧リスト自体に作用を追加します。

In [1]: alist = [] 
In [2]: alist.append(5) 
In [3]: alist.append(3) 
In [4]: alist 
Out[4]: [5, 3] 

np.appendは、その引数を変更しない:

In [5]: arr = np.array([]) 
In [6]: np.append(arr,1) 
Out[6]: array([ 1.]) 
In [7]: np.append(arr,2) 
Out[7]: array([ 2.]) 
In [8]: arr 
Out[8]: array([], dtype=float64) 

あなたがリスト同等の動作を取得するために戻ってarrappendの値を割り当てる必要があります:

In [9]: arr=np.append(arr,1) 
In [10]: arr=np.append(arr,2) 
In [11]: arr 
Out[11]: array([ 1., 2.]) 

各tiあなたはnp.appendを使用して新しいコピーを作成します(それはnp.concatenateを使用します)。 1〜2回はOKですが、繰り返し実行すると効率が悪いです。

好ましい方法は、リストを作成して、そこから配列を作るために、リストはappendを使用することです:

In [12]: np.array(alist) 
Out[12]: array([5, 3]) 

あなたはnp.appendを適切に使用することができます前に、np.concatenateを理解する必要があります。それはリストの追加のための貧しい代替物です。

関連する問題