

以下の2次元配列から "Yokohama"が含まれている行を削除したいです。

[code]

    arr = [
      ['AA', 'BB', 'CC'],
      ['Lemon', '30', 'Tokyo'],
      ['Lemon', '20', 'Osaka'],
      ['Lemon', '10', 'Yokohama'],
      ['Peach', '15', 'Tokyo']
    ]
    
[/code]

np.deleteで削除しようとしましたが、うまくできませんでした。  
1000万行ほどの処理に使うので、データ量に強い方法を教えていただけると助かります。  
よろしくお願いいたします。


CC BY-SA 4.0
2019-07-19T08:04:29.303
56746
2019-07-19T09:23:41.943
2019-07-19T09:07:50.430
13022
35169
question
python3 numpy
Pythonで2次元配列の行を、任意の条件に従って削除したい


この記事 [Selecting rows from a NumPy
ndarray](https://stackoverflow.com/q/1962980/9014308)
の質問の2つ目のコードを参考にすると、以下の様に書けるのでは？ 1000万行までサポートできるか？ は不明ですが。

[code]

    arr = arr[arr[:, 2] != 'Yokohama']
    
[/code]

参考:

> If I wanted only rows where the second value is 4, it is easy:
[code]

>     >>> test[test[:, 1] == 4]
>     array([[ 3,  4],
>            [ 7,  4],
>            [16,  4],
>            ...
>            [81,  4],
>            [83,  4],
>            [88,  4]])
>  
[/code]

まとめると、以下の様になります。

[code]

    import numpy as np
    
    arr = np.array((['AA','BB','CC'],
                    ['Lemon','30','Tokyo'],
                    ['Lemon','20','Osaka'],
                    ['Lemon','10','Yokohama'],
                    ['Peach','15','Tokyo']))
    
    arr = arr[arr[:, 2] != 'Yokohama']
    
    print(arr)
    
    #以下は表示結果
    #[['AA' 'BB' 'CC']
    # ['Lemon' '30' 'Tokyo']
    # ['Lemon' '20' 'Osaka']
    # ['Peach' '15' 'Tokyo']]
    
[/code]


CC BY-SA 4.0
2019-07-19T09:23:41.943
56748
2019-07-19T09:23:41.943
26370
56746
answer