Я пытаюсь вычислить происхождение и смещение массивов переменного размера и сохранить их в словаре. Вот вероятный не -pythonic способ, которым я достиг этого. Я не уверен, стоит ли мне использовать карту, лямбда-функцию или списки, чтобы сделать код более питоническим.
По сути, мне нужно вырезать куски массива на основе общего размера и сохранить xstart, ystart, x _число _из _строк _до _чтение, y _число _из _столбцов с _по _считываются в словаре. Общий размер варьируется. Я не могу загрузить весь массив в память и использовать индексацию numpy, иначе я бы определенно это сделал. Происхождение и смещение используются для получения массива в numpy.
intervalx = xsize / xsegment #Get the size of the chunks
intervaly = ysize / ysegment #Get the size of the chunks
#Setup to segment the image storing the start values and key into a dictionary.
xstart = 0
ystart = 0
key = 0
d = defaultdict(list)
for y in xrange(0, ysize, intervaly):
if y + (intervaly * 2) < ysize:
numberofrows = intervaly
else:
numberofrows = ysize - y
for x in xrange(0, xsize, intervalx):
if x + (intervalx * 2) < xsize:
numberofcolumns = intervalx
else:
numberofcolumns = xsize - x
l = [x,y,numberofcolumns, numberofrows]
d[key].append(l)
key += 1
return d
Я понимаю, что xrange не идеален для порта на 3.