擅长:python、mysql、java
<p>我不知道这是否有助于<code>ctypes</code>的情况,但是当调用Python integrad时,这些<code>scipy</code>函数将自由变量与参数连接起来。换句话说</p>
<pre><code>def bar(x,y,z):
return np.sin(x*y*z)
In [43]: quad(bar,0,1, args=(1,2))
Out[43]: (0.7080734182735712, 7.861194120923578e-15)
</code></pre>
<p>当以0.5计算时,它会<code>(x,)+args</code>:</p>
<pre><code>In [49]: bar(*(.5,)+(1,2))
Out[49]: 0.8414709848078965
In [50]: bar(.5,1,2)
Out[50]: 0.8414709848078965
</code></pre>
<p>所以用<code>c</code>签名:</p>
<pre><code>f_for_scipy(int n, double args[n])
</code></pre>
<p><code>n</code>是参数数,<code>args[n]</code>是表示值数组的指针。你知道吗</p>
<p>我正在使用<code>cython</code>及其扩展类型来试验这类调用</p>
<p><a href="https://cython.readthedocs.io/en/latest/src/tutorial/cdef_classes.html" rel="nofollow noreferrer">https://cython.readthedocs.io/en/latest/src/tutorial/cdef_classes.html</a></p>
<p><a href="https://stackoverflow.com/questions/32895553/passing-a-cython-function-vs-a-cython-method-to-scipy-integrate">Passing a cython function vs a cython method to scipy.integrate</a></p>