Estoy usando Python y Numpy para hacer algunos análisis de datos.iteración eficiente sobre matriz 3D?
Tengo una gran matriz 3D (NxNxN), donde cada celda es nuevamente una matriz, esta vez una matriz de 3x3. Llamando a la matriz data
, que se ve así:
data[N,N,N,3,3]
Tengo que encontrar los valores propios de todas las matrices de 3x3, y por eso el uso rutinario de Numpy eigvals
, pero lleva mucho tiempo hacer. En este momento, prácticamente hago esto:
for i in range(N):
for j in range(N):
for k in range(N):
a = np.linalg.eigvals(data[i,j,k,:,:])
Para N = 256, esto lleva alrededor de una hora. ¿Alguna idea sobre cómo hacer esto más eficiente?
Muchas gracias por cualquier sugerencia!
ha publicado usted? Sospecho que estás gastando mucho más tiempo en eigvals de lo que estás iterando. – matt
eigvals toma aproximadamente tres órdenes de magnitud más por mis cálculos de tiempo, así que no creo que cambiar la iteración vaya a afectar nada. – DSM