Robię trochę pracy, w której muszę załadować manipulować obrazy CT w formacie o nazwie Analyze 7.5 file format.Ładowanie Analiz obrazów w formacie 7.5 w python
Częścią tej manipulacji - która zajmuje absolutnie wiek z dużymi obrazami - jest ładowanie nieprzetworzonych danych binarnych do tablicy numpy i przekształcanie jej na właściwe wymiary. Oto przykład:
headshape = (512,512,245) # The shape the image should be
headdata = np.fromfile("Analyze_CT_Head.img", dtype=np.int16) # loads the image as a flat array, 64225280 long. For testing, a large array of random numbers would do
head_shaped = np.zeros(shape=headshape) # Array to hold the reshaped data
# This set of loops is the problem
for ux in range(0, headshape[0]):
for uy in range(0, headshape[1]):
for uz in range(0, headshape[2]):
head_shaped[ux][uy][uz] = headdata[ux + headshape[0]*uy + (headshape[0]*headshape[1])*uz] # Note the weird indexing of the flat array - this is the pixel ordering I have to work with
wiem numpy można zrobić dopasowania kształtu tablic szybko, ale nie mogę dowiedzieć się prawidłową kombinację przekształceń niezbędnych do replikacji efekt zagnieżdżonych pętli.
Czy istnieje sposób na skopiowanie tego dziwnego indeksowania za pomocą kombinacji numpy.reshape/numpy.ravel itp?
Dokładnie kod, którego szukałem, dzięki! – Theolodus