擅长:python、mysql、java
<p>您可以尝试的一种方法是将输入分解为接近所需x值的块(我重命名了变量,使其更接近绘图中的变量):</p>
<pre><code>test_y = np.linspace(0,2*np.pi,100)
test_x = np.cos(test_y)
# Determine which parts are close to zero
close_to_zero = np.isclose(test_x, 0, atol=1e-1)
</code></pre>
<p>现在我们可以将您的输入分解为接近零的“连续”块:</p>
<pre><code>chunks = []
prev_close = False
for x, y, close in zip(test_x, test_y, close_to_zero):
if not close:
if prev_close:
chunks.append(chunk)
if close:
if not prev_close:
chunk=[[y], [x]]
chunk[0].append(y)
chunk[1].append(x)
prev_close = close
chunks
</code></pre>
<p>输出:</p>
<pre><code>[[[1.5231964381041423,
1.5231964381041423,
1.5866629563584815,
1.6501294746128208],
[0.04758191582374218,
0.04758191582374218,
-0.01586596383480803,
-0.07924995685678855]],
[[4.6330558325667655,
4.6330558325667655,
4.696522350821105,
4.759988869075444],
[-0.07924995685678878,
-0.07924995685678878,
-0.01586596383480761,
0.04758191582374238]]]
</code></pre>
<p>现在可以迭代<code>(y, x)</code>中的<code>chunks</code>列表对,并对这些对进行线性插值以获得更精确的值。你知道吗</p>