如何在C numpy扩展中创建numpy.int8类型的对象?

时间:2018-08-13 08:22:06

标签: python numpy cpython python-c-api

我已经在C Python扩展中创建了自己的类。我希望它的行为像一个numpy数组。

比方说我的班级是myarray。我可以使用切片符号为它建立索引。这意味着我对mp_subscript的{​​{1}}函数的实现看起来是正确的。我可以进一步对其进行索引,并返回我想要的正确类型的元素。

mapping_methods

我还使用# Create a new myarray object of 10 elements a = myarray( 10 ) # Get a slice of this myarray, as a numpy.ndarray object # returns new one created with PyArray_NewFromDescr (no copy) b = a[2:4] # What is the class of an indexed item in the slice? print( b[0].__class__ ) <class 'numpy.int8'> 将直接索引实现为我自己的类型。为此,我尝试调用a[0]。但是我得到的对象的类型为PyArray_GETITEM

int

如何在我的C扩展名内创建# Create a new myarray object of 10 elements a = myarray( 10 ) # What is the class of an indexed item in the slice? # returns the result of calling PyArray_GETITEM. print( a[0].__class__ ) <class 'int'> 类型的对象?

1 个答案:

答案 0 :(得分:0)

发现我必须为此打电话给PyArray_Scalar