我想在cython中添加矢量添加,所以我使用scipy.linalg.cython_blas.daxpy
。
我的语法是:
daxpy(&n_samples, &tmp, &Q[0, ii], &inc, &G[0], &inc)
但在scikit-learn code,我读了
axpy(n_samples, -w[ii], &X_data[ii * n_samples], 1, R_data, 1)
其中axpy早先被定义为daxpy。
是&对于前两个变量(分别为int和double)是强制的?为什么没有&对于sklearn代码中的两个第一个参数?
答案 0 :(得分:3)
我认为这只是BLAS和CBLAS之间的区别。
BLAS(scipy.linalg为你包装)使用FORTRAN接口,因此大多数(/ all?)参数(包括简单的参数,如整数)都是通过指针传递的。
Scikit-learn looks to use CBLAS而不是scipy.linalg包装器。 CBLAS似乎定义了一个对C更自然的接口(通过值传递的简单参数)。
因此,如果你正在使用scipy Cython包装器,那么你看起来是正确的。