numpy 資料型別c 底層實現

2022-06-27 16:45:12 字數 2039 閱讀 7956

c++ 使用numpy 資料型別

#include #include #include //定義c ++ 資料型別

typedef struct

data;

//定義python 資料型別

typedef struct

py_data;

//定義python 資料成員

pymemberdef py_data_member = , };

pytypeobject py_data_type_type = ;

static pyobject *type_getitem(char *ip, pyarrayobject* ap)

static void type_copyswapn(void*dst, npy_intp dstride, void* src, npy_intp sstride,

npy_intp n, int swap, void *npy_unused(arr))

static void data_copyswap(void *dst, void* src, int swap, void* npy_unused(arr))

static int type_setitem(pyobject* op, char *ov, pyarrayobject* ap)

static npy_bool type_nonzero(char *ip, pyarrayobject* ap)

//直接拿著返回的數值就可以建立乙個numpy 陣列了。 在python 層也能返回numpy array 直接進行使用

static int register_numpy_dtype()

int type_num = 0;

static pyarray_arrfuncs _pydatatype_arrfuncs;

pyarray_initarrfuncs(&_pysignaltype_arrfuncs);

_pydatatype_arrfuncs.getitem = (pyarray_getitemfunc *)type_getitem;

_pydatatype_arrfuncs.setitem = (pyarray_setitemfunc *)type_setitem;

_pydatatype_arrfuncs.copyswap = (pyarray_copyswapfunc *)data_copyswap;

_pydatatype_arrfuncs.copyswapn = (pyarray_copyswapnfunc *)type_copyswapn;

_pydatatype_arrfuncs.nonzero = (pyarray_nonzerofunc *)type_nonzero;

pyarray_descr *data_descr;

signal_descr = pyobject_new(pyarray_descr, &pyarraydescr_type);

signal_descr->typeobj = &py_data_type_type;

signal_descr->kind = 'q';

signal_descr->type = 'j';

signal_descr->byteorder = '=';

signal_descr->type_num = 0;

signal_descr->elsize = sizeof(data);

signal_descr->alignment = 8;

signal_descr->subarray = null;

signal_descr->fields = null;

signal_descr->names = null;

signal_descr->f = &_pydatatype_arrfuncs;

py_incref(&py_data_type_type);

type_num = pyarray_registerdatatype(signal_descr);

if (type_num < 0)

return 0;

}

NumPy 資料型別

numpy 支援比 python 更多種類的數值型別。下表顯示了 numpy 中定義的不同標量資料型別。序號資料型別及描述 1.bool 儲存為乙個位元組的布林值 真或假 2.int 預設整數,相當於 c 的long,通常為int32或int64 3.intc相當於 c 的int,通常為int32或...

NumPy 資料型別

numpy提供的數值型別,數值範圍比python提供的數值型別更大。numpy的數值型別,如下表所示 sn資料型別描述1 bool 布林值,取值ture false,占用乙個位元組 2int 是integer的預設型別。與c語言中的long型別相同,有可能是64位或32位。3intc 類似於c語言中...

Numpy資料型別

numpy是python的一種開源的數值計算擴充套件,是一些針對矩陣進行運算的模組。1.numpy介紹 2.numpy 學習筆記 3.python中的list和array的不同之處 4.python列表 numpy陣列與矩陣的區別 1.python中的list和np.array的不同之處 numpy...