Опитвам се да напиша бърз интерфейс без копиране за моето обвързване с python на търговска библиотека за обработка на изображения. Приложих протокола за API на буфера в нов стил, който изглежда добре според memoryview():
import hirsch as H
import numpy as np
w,h = 7,5
img = H.HImage.GenImageConst('byte',w,h)
m = memoryview(img)
print 'ndim shape=',m.ndim,m.shape
# -> 2 (5L, 7L)
Това, което не разбирам, е защо numpy не хваща този интерфейс?
a = np.array(img)
print 'ndim size shape=',a.ndim,a.size,a.shape
# -> 0 1 ()
Правя ли нещо нередно или просто трябва да прибегна до използването на интерфейса на масива numpy, който работи, въпреки че копира данните?
Имайте предвид, че използвам python 2.7
bf_getbuffer
иbf_releasebuffer
. Предполага се, че новият буферен интерфейс работи и на Python 2.x (всъщност:np.array(memoryview('asd')) == np.array([ 97, 115, 100], dtype=np.uint8)
. (Имайте предвид също, че интерфейсът на масива Numpy не трябва да копира данните.) - person pv.   schedule 17.08.2014