Python 调用scipy.linalg.cython_blas.daxpy的正确方式是什么?

Python 调用scipy.linalg.cython_blas.daxpy的正确方式是什么?,python,scipy,cython,blas,Python,Scipy,Cython,Blas,我想在cython中进行就地向量加法,所以我使用了scipy.linalg.cython\u blas.daxpy 我的语法是: daxpy(&n_samples, &tmp, &Q[0, ii], &inc, &G[0], &inc) 但是在我的书里,我读了 其中axpy在前面已定义为daxpy 前两个变量(分别为int和double)是否必须输入(&D)?为什么sklearn代码中的前两个参数没有&我认为这就是BLAS和CBLAS之间的区别

我想在cython中进行就地向量加法,所以我使用了
scipy.linalg.cython\u blas.daxpy

我的语法是:

daxpy(&n_samples, &tmp, &Q[0, ii], &inc, &G[0], &inc)
但是在我的书里,我读了

其中axpy在前面已定义为daxpy


前两个变量(分别为int和double)是否必须输入(&D)?为什么sklearn代码中的前两个参数没有&我认为这就是BLAS和CBLAS之间的区别

BLAS(scipy.linalg为您包装)使用FORTRAN接口,因此大多数(/all?)参数(包括简单的参数,如整数)都是通过指针传递的

而不是scipy.linalg包装纸。CBLAS似乎定义了一个对C更自然的接口(按值传递的简单参数)


因此,如果您使用的是scipy Cython包装,那么您看起来是正确的

axpy(n_samples, -w[ii], &X_data[ii * n_samples], 1, R_data, 1)