chainer.functions.permutate(x, indices, axis=0, inv=False)[source]

与えられた変数を軸(axis)に添って並べ替える。

 

この関数は  x を与えられた indicesを用いて並べ替えます。つまり全ての iについて y[i] = x[indices[i]] 。この結果は y = x.take(indices).と同じであることに注意してください。indices は [0, 1, ..., len(x) - 1]を並べ替えたものでなければなりません。

inv が Trueの場合、 indices はその反転として扱われます。つまり y[indices[i]] = x[i]です。

 

Parameters:
  • x (Variable or numpy.ndarray or cupy.ndarray) – 並べ替えるVariable。 A (s1,s2,...,sN)(s1,s2,...,sN) -型の float 配列。
  • indices (Variable or numpy.ndarray or cupy.ndarray) – Variableから抽出されたインデックス。A 1次元の整数配列。
  • axis (int) – 入力配列が並べ替えられる時に基準になる軸。
  • inv (bool) – Trueの場合、indices はその反転として扱われる。
Returns:

出力値。

Return type:

Variable

 

Example

 

 



>>> x = np.arange(6).reshape((3, 2)).astype('f')
>>> x
array([[ 0., 1.], [ 2., 3.], [ 4., 5.]], dtype=float32)
>>> indices = np.array([2, 0, 1], 'i')
>>> y = F.permutate(x, indices)
>>> y.data
array([[ 4., 5.], [ 0., 1.], [ 2., 3.]], dtype=float32)
>>> y = F.permutate(x, indices, inv=True)
>>> y.data
array([[ 2., 3.], [ 4., 5.], [ 0., 1.]], dtype=float32)
>>> indices = np.array([1, 0], 'i')
>>> y = F.permutate(x, indices, axis=1)
>>> y.data
array([[ 1., 0.], [ 3., 2.], [ 5., 4.]], dtype=float32)