NumPy の配列から要素を削除する

Vaibhav Vaibhav 2023年10月10日
  1. numpy.delete() 関数を使用して要素を削除する
  2. numpy.setdiff1d() 関数を使用して要素を削除する
NumPy の配列から要素を削除する

この記事では、NumPy 配列から要素を削除する 2つの方法について学習します。

numpy.delete() 関数を使用して要素を削除する

次のコードを参照してください。

import numpy as np

myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)

出力:

[ 1  2  3  5  7  9 10]

上記のコードでは、NumPy ライブラリの delete() 関数を使用しています。delete() 関数は、arrobj、および axis の 3つのパラメーターを受け入れ、NumPy 配列を出力します。arr は、要素を削除したい NumPy 配列です。obj は整数のリストです。これらの番号は、配列から削除する必要がある要素のインデックスを表します。最後に、axis はオプションの引数です。axis は、obj の対象となる要素を削除する軸を指します。このパラメータに None 値が割り当てられている場合、arr はフラット化され、このフラット化された配列に対して削除が実行されます。

いつものように、arr の範囲外にあるインデックスがこのメソッドに提供されると、IndexError 例外がスローされます。

import numpy as np

myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7, 34]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)

出力:

Traceback (most recent call last):
  File "<string>", line 5, in <module>
File "<__array_function__ internals>", line 5, in delete
  File "/path/to/library/numpy/lib/function_base.py", line 4480, in delete
keep[obj,] = False
IndexError: index 34 is out of bounds for axis 0 with size 10

この関数の詳細については、この関数の公式ドキュメントを参照してくださいこちら

多次元 NumPy 配列での削除の例をさらに 2つ示します。

import numpy as np

myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], 1)
print(modifiedArray)

出力:

[[ 1  4  5]
 [11 14 15]
 [21 24 25]]

パラメータ axis の値として None を使用します。

import numpy as np

myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], None)
print(modifiedArray)

出力:

[ 1  4  5 11 12 13 14 15 21 22 23 24 25]

numpy.setdiff1d() 関数を使用して要素を削除する

今回は、NumPysetdiff1d() 関数を使用します。この関数は、ar1ar2、および assume_unique の 3つのパラメーターを受け入れます。ar1ar2 は 2つの NumPy アレイです。また、assume_unique はオプションのブール引数です。デフォルト値は False です。True の場合、2つの入力配列は一意であると見なされ、この想定により計算時間を短縮できます。

setdiff1d() は、ar2 にはない ar1 の一意の値を返します。

次のコードを参照してください。

import numpy as np

myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.setdiff1d(myArray, indexes)
print(modifiedArray)

出力:

[ 1  2  4  6  8  9 10]

numpy.delete() とは異なり、両方の配列は NumPy 配列であり、実際の要素は含まれていますが、インデックスは含まれていません。

この関数の詳細については、この関数の公式ドキュメントこちらを参照してください。

著者: Vaibhav Vaibhav
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.