Mam tablicę 3D w Pythonie i potrzebuję iteracji nad wszystkimi sześcianami w tablicy. Oznacza to, że dla wszystkich (x,y,z)
w wymiarach tablicowych muszę dostęp kostkę:Pythonowy sposób iterowania na macierzy 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)]
tablica jest tablicą Numpy, choć nie jest to naprawdę konieczne. Po prostu bardzo łatwo było odczytać dane za pomocą jednej linijki przy użyciu numpy.fromfile()
.
Czy istnieje więcej Pythonic sposób iteracji nad tymi niż następujące? To po prostu wygląda jak C używając składni Pythona.
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)])
zostanie to odebrane przez http : //stackoverflow.com/questions/1280667/in-python-is-there-an-easier-way-to-write-6-nested-for-loops? – tom10
To byłby zakres (...- 1), tutaj ... – EOL
Właściwie tak @ tom10, to odpowiada na pytanie –