Чтобы сделать то, что вы хотите на букву , это один из способов продолжить:
>>> img = 'ABCDEFGHIJKL'
>>> x, y = 4, 3
>>> def chunks(l, n):
... for i in xrange(0, len(l), n):
... yield l[i:i+n]
...
>>> [row for row in chunks(img, x)]
['ABCD', 'EFGH', 'IJKL']
>>> ''.join(reversed([row for row in chunks(img, x)]))
'IJKLEFGHABCD'
ОДНАКО , если у вас нет очень маленьких изображений, вы быбыть лучше проходить через numpy , так как это как минимум на на порядок быстрее , чем типы данных Cpython.Вы должны взглянуть на функцию flipup .Пример:
>>> A
array([[ 1., 0., 0.],
[ 0., 2., 0.],
[ 0., 0., 3.]])
>>> np.flipud(A)
array([[ 0., 0., 3.],
[ 0., 2., 0.],
[ 1., 0., 0.]])
РЕДАКТИРОВАТЬ: думал добавить полный пример на случай, если вы никогда не работали с NumPy раньше.Конечно, преобразование стоит только для изображений, которые не имеют размер 2x2, поскольку создание экземпляра массива приводит к дополнительным затратам ....
>>> import numpy as np
>>> img = [0x00, 0x01, 0x02, 0x03]
>>> img
[0, 1, 2, 3]
>>> x = y = 2
>>> aimg = np.array(img).reshape(x, y)
>>> aimg
array([[0, 1],
[2, 3]])
>>> np.flipud(aimg)
array([[2, 3],
[0, 1]])