python - 调用 scipy.linalg.cython_blas.daxpy 的正确方法是什么?

标签 python scipy cython blas

我想在 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 代码中的前两个参数没有 & ?

最佳答案

我认为这就是BLAS和CBLAS的区别。

BLAS(scipy.linalg 为您包装)使用 FORTRAN 接口(interface),因此大多数(/所有?)参数(包括简单参数,例如整数)通过指针传递。

Scikit-learn looks to use CBLAS而不是 scipy.linalg 包装器。 CBLAS 似乎定义了一个对 C 更自然的接口(interface)(按值传递的简单参数)。


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

关于python - 调用 scipy.linalg.cython_blas.daxpy 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42248311/

相关文章:

python - Cython编译为exe,Windows

Python:从子包和主包中导入一个子包模块

python - 通过我的 python 脚本中的子进程从 C++ 捕获 cout

python - 使用 scipy 中的 optimization.minimize 和 2 个变量和插值函数

python - 为什么有两种语法将 np 数组传递给 cython 函数?

python - 使用 cython 运行 pytest - 如何在 pytest 中编译 cython 模块?

python - ttk.Treeview - 无法更改行高

python - 使用 pymongo 聚合整个 mongodb 对象

python - Numpy ndarray 图像像素平均值大于零的像素值 : Normalizing image

python - 如何计算 scipy 稀疏矩阵行列式而不将其变为密集?