0

次の関数が行うことを達成するための厄介な関数またはビューの巧妙な使用法はありますか?

 import numpy as np

 def permuteIndexes(array, perm):
     newarray = np.empty_like(array)
     max_i, max_j = newarray.shape
     for i in xrange(max_i):
         for j in xrange(max_j):
             newarray[i,j] = array[perm[i], perm[j]]
     return newarray

つまり、リスト内の行列のインデックスの特定の順列についてperm、この関数は、この順列を行列のインデックスに適用した結果を計算します。

4

1 に答える 1

6
def permutateIndexes(array, perm):
    return array[perm][:, perm]

実際には、これは1回で行うので、より優れています。

def permutateIndexes(array, perm):
    return array[np.ix_(perm, perm)]

非正方形配列を操作するには:

def permutateIndexes(array, perm):
    return array[np.ix_(*(perm[:s] for s in array.shape))]
于 2012-08-24T18:36:44.740 に答える