2017-08-01 5 views
0

私はPythonプロジェクトに取り組んでいますが、何時間も私を邪魔している場所にいました。私は本当にあなたの助けが必要です!ここでnumpy配列の行のバッチを同時に削除するにはどうすればいいですか?

が質問です:

私はサイズ(130万×110)で非常に大きいnumpyの配列Xを得た、と私は同時に、アレイから行のバッチを削除したいです。削除する行のインデックスは、Pythonリストに格納されます。 Xが配列で、lisがリストであるとします。

これは何か他のスマートなトリックを行うことができますか?

+0

? – fxy

+0

あなたのケースでは、 'np.delete'は' mask = np.ones(nrows、bool) 'を作成します。削除値をFalseに設定します。 'mask [idx] = False'を返し、' your_array [mask、;] 'を返します。つまり、booleanマスクを使用して保持する行を選択します。 – hpaulj

答えて

1

ありnumpyの機能np.deleteは、このためである:配列が大きいので、行を削除するのに使用される方法は、迅速であることができるので、例えば、

np.delete(arr, indices_to_be_deleted, axis=0) 

ところで

In [91]: arr = np.arange(20).reshape(10,2, order='F'); arr 
Out[91]: 
array([[ 0, 10], 
     [ 1, 11], 
     [ 2, 12], 
     [ 3, 13], 
     [ 4, 14], 
     [ 5, 15], 
     [ 6, 16], 
     [ 7, 17], 
     [ 8, 18], 
     [ 9, 19]]) 

In [92]: np.delete(arr, [0,3,4,7], axis=0) 
Out[92]: 
array([[ 1, 11], 
     [ 2, 12], 
     [ 5, 15], 
     [ 6, 16], 
     [ 8, 18], 
     [ 9, 19]]) 
+0

私はこの機能を試しましたが、これに問題があります。私は削除のためにたくさんの行を持っていますが、6行目、9行目、100行目を削除する必要があると言います......しかし、X = np.delete(X、6,0 )、9番目の行を削除するためのインデックスが8番目に変更されました。これは便利で計算が遅いです。 – fxy

+0

@fxy Err、インデックスのリストを指定してください... –

+1

ありがとうございました!!!わかった! – fxy

関連する問題