関数の機能: 配列の各要素の値をインデックスとして、別の配列から値を選択して配列を作成し返却
下記の例では、「別の配列」の名前を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の使い方の例