Я получаю сообщение об ошибке из следующего кода Python3 в указанных строках. x, y и z - все простые двумерные массивы numpy, идентичные, но по размеру, и должны работать одинаково. Однако они действуют по-разному: y и z дают сбой, а x работает нормально.
import numpy as np
from PIL import Image
a = np.ones( ( 3,3,3), dtype='uint8' )
x = a[1,:,:]
y = a[:,1,:]
z = a[:,:,1]
imx = Image.fromarray(x) # ok
imy = Image.fromarray(y) # error
imz = Image.fromarray(z) # error
но это работает
z1 = 1*z
imz = Image.fromarray(z1) # ok
Ошибка:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python3\lib\site-packages\PIL\Image.py", line 1918, in fromarray
obj = obj.tobytes()
AttributeError: 'numpy.ndarray' object has no attribute 'tobytes'
Итак, в чем разница между x, y, z, z1? Ничего, что я могу сказать.
>>> z.dtype
dtype('uint8')
>>> z1.dtype
dtype('uint8')
>>> z.shape
(3, 4)
>>> z1.shape
(3, 4)
Я использую Python 3.2.3 на компьютере с Windows 7 Enterprise, все 64-битное.