回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我在使用<code>Numbers[(Numbers<=0).argmax():] = 0</code>函数时遇到了问题,如果条件满足,它应该将它后面的所有元素都变成零,但是如果条件不满足,它会将所有数组元素变成零。如何解决此问题。如果不满足<code>Numbers<=0</code>条件,则不应更改数组</p>
<p>满足条件为-35.15610151的阵列:</p>
<pre><code>Numbers = np.array([123.6, 123.6 , 123.6, 110.3748, 111.6992976,
102.3165566, 97.81462811 , 89.50038472 , 96.48141473 , 90.49956702,
88.59907611 , 77.96718698, 61.51611052, 56.84088612, 55.36302309,
54.69866681, 56.44902415 , 59.49727145, 42.12406819, 27.42276839,
33.86711896, 32.10602877, -35.15610151, 32.34361339 , 29.20628289])
Numbers[(Numbers<=0).argmax():] = 0
</code></pre>
<p>输出:</p>
<pre><code>[123.6 123.6 123.6 110.3748 111.6992976
102.3165566 97.81462811 89.50038472 96.48141473 90.49956702
88.59907611 77.96718698 61.51611052 56.84088612 55.36302309
54.69866681 56.44902415 59.49727145 42.12406819 27.42276839
33.86711896 32.10602877 0. 0. 0. ]
</code></pre>
<p>没有满足条件的数组,将-35.1561015变为+35.1561015:</p>
<pre><code>Numbers = np.array([123.6, 123.6 , 123.6, 110.3748, 111.6992976,
102.3165566, 97.81462811 , 89.50038472 , 96.48141473 , 90.49956702,
88.59907611 , 77.96718698, 61.51611052, 56.84088612, 55.36302309,
54.69866681, 56.44902415 , 59.49727145, 42.12406819, 27.42276839,
33.86711896, 32.10602877, 35.15610151, 32.34361339 , 29.20628289])
Numbers[(Numbers<=0).argmax():] = 0
</code></pre>
<p>输出:</p>
<pre><code>[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0.]
</code></pre>