我想從一個模塊中獲取一些數據,這是一個用ctypes包裝的共享對象。 數據是一個數字數組,所以我使用numpy數組來存儲數據。但我知道我 不明白numpy如何組織內存中的數組。numpy數組如何在內存中組織?
如果我有一個C函數,將填補一個數組象下面這樣:
int filler(int* a,int length){
int i=0;
for(i=0;i<length;i++){
a[i]=i;
}
return 0;
}
然後我會使用ctypes的
import ctypes
import numpy
lib = ctypes.cdll.LoadLibrary("libname")
data = numpy.zeros((1,10),dtype=numpy.int16)
lib.filler(data.ctypes.data,ctypes.c_int(10))
print data
調用蟒蛇這個功能,但我的輸出出來的這種方式。
dtype=numpy.int16
[[0 0 1 0 2 0 3 0 4 0]]
這將使意義,如果INT爲32位,但我假設在C INT是16位(GCC openSUSE中在86英特爾機)。 我試着用dtypes爲32位運行,奇怪的是我得到的結果,我想:
dtype=numpy.int32
[[0 1 2 3 4 5 6 7 8 9]]
試圖使正在發生的事情我INT8跑感,我得到了以下內容:
dtype=numpy.int8
[[0 0 0 0 1 0 0 0 2 0]]
我確實看了一下numpy文檔,但到目前爲止我還沒有找到答案。