Я пытаюсь передать вектор C ++ обратно в Python с помощью Cython, и я не уверен, что делаю не так. Он компилируется, но возвращаемый объект - None
.
PyClass.py файл
import numpy as np
cimport numpy as np
from libcpp.vector cimport vector
cdef extern from "construct_neighborhood_graph.h":
cdef vector[int] construct_neighborhood_graph_cy(int n,
double * X)
cdef construct_neighborhood_graph_np(n,
np.ndarray[double, ndim=2, mode="c"] X):
construct_neighborhood_graph_cy(n,
<double *> np.PyArray_DATA(X))
class PyClass:
def fit_predict(self, X):
X = np.ascontiguousarray(X)
n, d = X.shape
neighbors = construct_neighborhood_graph_np(n, X)
neighbors
здесь нет!
construct_neighborhood_graph.h file
#include <vector>
using namespace std;
vector<int> construct_neighborhood_graph_cy(int n,
double * X,
int * num_neighbors) {
vector<int> neighbors;
for (int i = 0; i < n; i++) {
neighbors.push_back(i);
}
return neighbors;
}
Нужно ли мне объявлять класс в Python? Или можно просто объявить функцию?