Permutando los índices de matriz 2d de numpy
Frecuentes
Visto 1,578 veces
0
¿Hay alguna función numpy o uso inteligente de las vistas para lograr lo que hace la siguiente función?
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
Es decir, para una permutación dada de los índices de la matriz en una lista perm
, esta función calcula el resultado de aplicar esta permutación a los índices de una matriz.
1 Respuestas
6
def permutateIndexes(array, perm):
return array[perm][:, perm]
En realidad, esto es mejor ya que lo hace de una sola vez:
def permutateIndexes(array, perm):
return array[np.ix_(perm, perm)]
Para trabajar con matrices no cuadradas:
def permutateIndexes(array, perm):
return array[np.ix_(*(perm[:s] for s in array.shape))]
Respondido 24 ago 12, 19:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas python arrays numpy multidimensional-array or haz tu propia pregunta.
hummm! Debo aprender a usar esas vistas correctamente. ¿Hay alguna guía por ahí? - Rafael S. Calsaverini
@RafaelS.Calsaverini definitivamente leyó el Tutorial tentativo de NumPy si aún no lo ha hecho. - ecatmur