0

是否有任何 numpy 功能或巧妙地使用视图来完成以下功能?

 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

也就是说,对于 list 中矩阵索引的给定排列perm,此函数计算将此排列应用于矩阵索引的结果。

4

1 回答 1

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

实际上,这更好,因为它一次完成:

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 回答