2011-06-25 57 views
7

我知道如何讓一個ctypes指針numpy的數組的開頭:ctypes的指針變成numpy的數組的中間

a = np.arange(10000, dtype=np.double) 
p = a.ctypes.data_as(POINTER(c_double)) 
p.contents 
c_double(0.0) 

不過,我需要通過指針,讓我們說,元件100 ,而不復制陣列。 必須有一個簡單的方法來做到這一點,但無法找到它。

任何提示讚賞。

回答

11

切片一個numpy的陣列創建的視圖,而不是一個拷貝:

>>> a = numpy.arange(10000, dtype=numpy.double) 
>>> p = a[100:].ctypes.data_as(ctypes.POINTER(ctypes.c_double)) 
>>> p.contents 
c_double(100.0) 
>>> a[100] = 55 
>>> p.contents 
c_double(55.0)