如何在 Cython 中构造元组?

Ale*_*des 5 python arrays numpy cpython cython

我是 cython 的新手,我只是在寻找一种将 numpy 数组转换为元组的简单方法,然后可以将其添加到和/或在字典中查找。

在 CPython 中,我可以使用 PyTuple_New 并迭代数组的值(将每个值添加到元组中,就像我将它们附加到列表一样)。

Cython 似乎没有提供通常的 CPython 函数。我怎么能打开一个数组:

array([1,2,3])
Run Code Online (Sandbox Code Playgroud)

成一个元组:

(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

Vik*_*kez 3

Cython 是 Python 的超集,因此任何有效的 Python 代码都是有效的 Cython 代码。在这种情况下,如果您有一个 NumPy 数组,只需将其传递给tuple类构造函数就可以正常工作(就像在常规 Python 中一样)。

a = np.array([1, 2, 3])
t = tuple(a)
Run Code Online (Sandbox Code Playgroud)

Cython 将负责将这些构造转换为适当的 C 函数调用。