2016-04-04 8 views
0

から値を削除します。 は、私はいくつかの場所で値0を持っているが、私は唯一の値< 0と> 0は、私は1次元配列を持っているし、ヒストグラムをプロットし、ガウスことによってそれを当てはめることによって、私は(私のガウスのシグマスケールで)ノイズマップ上の信号を作成する1次元配列

は、私はこのような私のスクリプトを書くことができておきたいですか?

new_SN_map = temp_SN_map[(temp2_SN_map < 0) & (temp_SN_map > 0)] 

値0を自動的に削除する方法はありますか?

答えて

2

将来の読者のために、私はそれがより一般的にするために、あなたの配列の名前を変更します:

array = temp_SN_map 

あなたの問題については、さまざまな方法があります。まず第一に、あなたの提案が働くだろう:

new_array = array[(array < 0) & (array > 0)] 

しかし、選択肢があります:

new_array = array[array != 0]  # using only one comparison 

new_array = array[np.nonzero(array)] # using np.nonzero 

new_array = array[np.where(array)] # using np.where 
  • np.nonzero()1を使用したが、特に、ゼロではない値を除外するために調整されています。 np.where()2または!= 0を使用して

  • は特別な値を除外するためのものです。あなたが特定の範囲を除外したい場合はa < 0 & a > 0を使用して

  • が良いです。

お知らせしかし、それらのそれぞれが、他のものがやっているすべてを行うことができるように、それはあなたがリード/最も適切と思われるものに主に依存したり、効率を気場合は最速何それを時間を計る必要があります。

+0

私はさらに行く疑問を持っています。私は2D配列を持っていると仮定します。なぜこのプロセスを適用すると2D配列が1D配列になるのですか? – Deadpool

+0

numpyはギャップを持つ2D配列しか扱えないため、**それらを1Dに変換する必要があります**。 'np.mgrid'または' np.ogrid'を使って座標情報を保持することもできます。 – MSeifert

1
foo is your 1D numpy array. 

foo[np.where(foo != 0)] 
関連する問題