我正在尝试计算可变大小数组的起点和偏移量,并将它们存储在一个字典中。以下是我使用非Pythonic方式实现这个功能的代码。不确定是否应该使用map函数、lambda函数或列表推导式来使代码更Pythonic。
基本上,我需要根据总大小切割数组块,并将xstart、ystart、x_number_of_rows_to_read和y_number_of_columns_to_read存储在字典中。总大小是可变的。如果可以加载整个数组到内存并使用numpy索引,则一定会这样做。原点和偏移量用于将数组输入numpy中。
基本上,我需要根据总大小切割数组块,并将xstart、ystart、x_number_of_rows_to_read和y_number_of_columns_to_read存储在字典中。总大小是可变的。如果可以加载整个数组到内存并使用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的移植。
h5py
吗?它允许你使用numpy
语法来处理数组,而无需将所有元素加载到内存中。 - jfs