2017-11-05 15 views
0

私はいくつかの正の数といくつかの-1要素を持つnumpy配列を持っています。私はこれらの要素を-1の値で見つけ出し、それらを削除してindecesを保存したいと考えています。numpy配列から特定の要素を見つけて削除する効果的な方法

値を-1に設定すると、配列を繰り返し実行してチンキングする方法があります。これが唯一の方法ですか?もしそうでなければ、その有効性はどうですか?より効果的なPythonツールはありませんか? numpy.argwhere()numpy.delete()ルーチンと

+1

。あなたが徹底的に検索するならば、あなたは似たような多くの質問を見つけるでしょう。 ( 'np.where(a == - 1)'と 'a [a!= -1]') – Kasramvd

答えて

0
import numpy as np 
yourarray=np.array([4,5,6,7,-1,2,3,-1,9,-1]) #say 
rangenumpyarray=np.arange(len(yourarray)) # to create a column adjacent to your array of range 
arra=np.hstack((rangenumpyarray.reshape(-1,1),yourarray.reshape(-1,1))) # combining both arrays as two columns 
arra[arra[:,1]==-1][:,0] # learn boolean indexing 
0

np.flatnonzeroとシンプルブールインデックスの組み合わせを使用してください。あなたが `np.where`とシンプルなインデックスを使用して使用することができます

x = array([ 0, 0, -1, 0, 0, -1, 0, -2, 0, 0]) 
m = x != -1 # generate a mask 

idx = np.flatnonzero(~m) 
x = x[m] 
idx 
array([2, 5]) 

x 
array([ 0, 0, 0, 0, 0, -2, 0, 0]) 
関連する問題