【发布时间】:2021-05-19 20:34:47
【问题描述】:
我在使用Numbers[(Numbers<=0).argmax():] = 0 函数时遇到问题,如果满足条件,它应该将其后面的所有元素都变为零,但是如果不满足条件,它会将所有数组元素变为零。我该如何解决这个问题。如果不满足Numbers<=0 条件,则数组不应更改。
在-35.15610151处满足条件的数组:
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
输出:
[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. ]
不满足条件的数组,将-35.15610151变成+35.15610151:
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
输出:
[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.]
【问题讨论】:
-
你自己检查过
(Numbers<=0).argmax()吗?如果这不正确,则更大的表达式也不正确。 -
np.ones(3, bool).argmax()为0,第一个True。
标签: python arrays function numpy sorting