Tengo una matriz 3D en Python y necesito iterar sobre todos los cubos de la matriz. Es decir, para todos (x,y,z)
en las dimensiones de la matriz necesito para acceder al cubo:Manera pitónica de iterar sobre una matriz 3D
array[(x + 0, y + 0, z + 0)]
array[(x + 1, y + 0, z + 0)]
array[(x + 0, y + 1, z + 0)]
array[(x + 1, y + 1, z + 0)]
array[(x + 0, y + 0, z + 1)]
array[(x + 1, y + 0, z + 1)]
array[(x + 0, y + 1, z + 1)]
array[(x + 1, y + 1, z + 1)]
La matriz es una matriz Numpy, aunque eso no es realmente necesario. Me pareció muy fácil leer los datos con un solo trazador usando numpy.fromfile()
.
¿Hay alguna forma más pitonica de iterar sobre estos que la siguiente? Eso simplemente se ve como C usando la sintaxis de Python.
for x in range(x_dimension):
for y in range(y_dimension):
for z in range(z_dimension):
work_with_cube(array[(x + 0, y + 0, z + 0)],
array[(x + 1, y + 0, z + 0)],
array[(x + 0, y + 1, z + 0)],
array[(x + 1, y + 1, z + 0)],
array[(x + 0, y + 0, z + 1)],
array[(x + 1, y + 0, z + 1)],
array[(x + 0, y + 1, z + 1)],
array[(x + 1, y + 1, z + 1)])
Será este respondidas por http : //stackoverflow.com/questions/1280667/in-python-is-there-an-easier-way-to-write-6-nested-for-loops? – tom10
Ese sería el rango (...- 1), aquí ... – EOL
En realidad, sí @ tom10, responde a la pregunta –