擅长:python、mysql、java
<p>正如@LutzL所提到的,您可以使用较新的API <a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.solve_ivp.html" rel="nofollow noreferrer">^{<cd1>}</a>。</p>
<pre><code>results = solve_ivp(obj_func, t_span, y0, t_eval = time_series)
</code></pre>
<p>如果没有指定<code>t_eval</code>,那么每个时间戳就没有一条记录,这是我假设的大多数情况。</p>
<p>另一个注意事项是,对于<a href="https://docs.scipy.org/doc/scipy-0.13.0/reference/generated/scipy.integrate.odeint.html" rel="nofollow noreferrer">^{<cd3>}</a>和通常是其他积分器,输出数组是<code>[len(time), len(states)]</code>形状的<code>ndarray</code>,但是对于<code>solve_ivp</code>,输出是一维ndarray的<code>list(length of state vector)</code>(其长度等于<code>t_eval</code>)。</p>
<p>所以如果你想要相同的顺序你必须合并它。你可以这样做:</p>
<pre><code>Y =results
merged = np.hstack([i.reshape(-1,1) for i in Y.y])
</code></pre>
<p>首先,需要对其进行整形,使其成为一个<code>[n,1]</code>数组,并将其水平合并。
希望这有帮助!</p>