関数ndarray.chooseの使い方の例

関数の機能: 配列の各要素の値をインデックスとして、別の配列から値を選択して配列を作成し返却

下記の例では、「別の配列」の名前をchoicesとしています。

例1 : choises が1次元の配列の場合

>>> a = np.array([[1, 2, 0],
	          [4, 0, 1]])
>>> choices = np.array([0.3, 1.2, 2.1, 3.4, 4.6])
>>> a.choose(choices)
array([[1.2, 2.1, 0.3],
       [4.6, 0.3, 1.2]])

例2 : choises のサイズ以上のインデックス値がある場合

>>> a = np.array([1, 3, 0])
>>> choices = np.array([0.3, 1.2, 2.1])
>>> a.choose(choices)
Traceback (most recent call last):
    a.choose(choices)
ValueError: invalid entry in choice array
choisesのインデックスは0〜2の範囲であるにも関わらず、配列aの2つ目の要素がこの範囲外である3であったため、エラーが発生しました。
choose関数のパラメーターmodeを'wrap'か'clip'にすると、インデックスの値を下記のように変えて処理が行われます。

mode = 'wrap' : ind % n に変更
mode = 'clip' : indが負の値なら0に、n以上ならn-1に変更

ここで、インデックス値はindとし、choicesのインデックスの範囲は[0, n-1]としています。
>>> a = np.arange(-5,5)
>>> a
array([-5, -4, -3, -2, -1,  0,  1,  2,  3,  4])
>>> a.choose(choices, mode='wrap')
array([1.2, 2.1, 0.3, 1.2, 2.1, 0.3, 1.2, 2.1, 0.3, 1.2])
>>> a.choose(choices, mode='clip')
array([0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 1.2, 2.1, 2.1, 2.1])

例3 : choices が2次元の配列の場合

>>> a = np.array([2,0,1])
>>> choices = np.array([[0, 1, 2],
		        [3, 4, 5],
		        [6, 7, 8]])
>>> a.choose(choices)
array([6, 1, 5])
関連項目
関数ndarray.compressの使い方の例
関数ndarray.takeの使い方の例