2017-02-15 20 views
2

私はcythonでベクターの追加を行いたいので、私はscipy.linalg.cython_blas.daxpyを使っています。scipy.linalg.cython_blas.daxpyを呼び出す正しい方法は何ですか?

私の構文は次のとおりです。

daxpy(&n_samples, &tmp, &Q[0, ii], &inc, &G[0], &inc) 

しかしscikit-learn codeに、私はaxpyが先にDAXPYのように定義されてい

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

をお読みください。

&は最初の2つの変数(それぞれintとdouble)に必須ですか?なぜsklearnコードの2つの最初の引数には&がありませんか?

答えて

3

これはBLASとCBLASの違いだと思います。

BLAS(あなたのためにscipy.linalgがラップする)はFORTRANインターフェイスを使用するので、ほとんどの(すべての?)引数(整数などの単純なものを含む)はポインタによって渡されます。 scipy.linalgラッパーではなく

Scikit-learn looks to use CBLASです。 CBLASは、Cにとってより自然なインターフェースを定義しているようです(値によって渡される単純な引数)。あなたはscipyのダウンロードCythonラッパーを使用している場合


はそのため、あなたはそれを正しくやって見てください。

関連する問題