1. ホーム
  2. python

[解決済み] NumPy配列の要素のインデックス[重複]について

2022-03-13 21:09:02

質問

Pythonでは、配列内の値のインデックスを取得するために .index() .

しかし、NumPyの配列では、私がしようとすると。

decoding.index(i)

得ることができる。

AttributeError: 'numpy.ndarray' オブジェクトには 'index' という属性がありません。

NumPyの配列でこれを行うにはどうしたらよいでしょうか?

どのように解決するのですか?

使用方法 np.where であるインデックスを取得します。 True .

2Dの場合 np.ndarray という a :

i, j = np.where(a == value) # when comparing arrays of integers

i, j = np.where(np.isclose(a, value)) # when comparing floating-point arrays

1次元配列の場合。

i, = np.where(a == value) # integers

i, = np.where(np.isclose(a, value)) # floating-point

のような条件でも有効であることに注意してください。 >= , <= , != などなど...。

のサブクラスを作成することもできます。 np.ndarray を使用し index() メソッドを使用します。

class myarray(np.ndarray):
    def __new__(cls, *args, **kwargs):
        return np.array(*args, **kwargs).view(myarray)
    def index(self, value):
        return np.where(self == value)

テスト中です。

a = myarray([1,2,3,4,4,4,5,6,4,4,4])
a.index(4)
#(array([ 3,  4,  5,  8,  9, 10]),)