使用numpy C API将numpy数组标量强制为特定的C类型

使用numpy C API将numpy数组标量强制为特定的C类型,numpy,python-c-api,Numpy,Python C Api,我有一个PyObject*表示一个numpy标量数组,我想检查是否可以将该值强制为一个浮点值,如果可以,则取出一个C浮点值。我已经详细阅读了numpy C api文档,但还没有做到这一点。一种可能的方法,如中所建议的 是检查是否存在\uuuuu float\uuuu属性。例如 bool convertible_to_float(PyObject* obj_ptr) PyObject_HasAttrString(obj_ptr, "__float__") 这对应于Python解释器级别的

我有一个PyObject*表示一个numpy标量数组,我想检查是否可以将该值强制为一个浮点值,如果可以,则取出一个C浮点值。我已经详细阅读了numpy C api文档,但还没有做到这一点。

一种可能的方法,如中所建议的 是检查是否存在
\uuuuu float\uuuu
属性。例如

bool convertible_to_float(PyObject* obj_ptr)
    PyObject_HasAttrString(obj_ptr, "__float__")
这对应于Python解释器级别的内置函数
float
,并告诉您它是否可转换为常规Python
float
类型

浮点数通常在C中使用双精度实现; 有关的精度和内部表示的信息 程序所在机器的浮点数 可在sys.float\u info中运行

因此,可以将Numpy标量数组转换为Python float,将C double转换为C float。可能会转换为
Python直接将浮点转换为C浮点。HTH.

您是否知道并想要一个使用示例,或者您在文档中遗漏了它们?是的,我找到了这些示例,并希望得到一个示例——PyArray\u Cancoercescalal似乎是我想要的,但我不清楚如何为给定的C类型设置PyArray\u Descr参数。