首页 > 解决方案 > 使用运算符和迭代 Numpy Python 修改数组

问题描述

a[a.size - (a >= 0)[::-1].argmax():] = 0如果数组等于或小于 0,则该函数将 0 分配给数组,它还将 0 分配给它后面的数组。在示例a中,该函数工作正常,它将 0 分配给第三个元素,直到最后一个元素。但是在示例b中,即使初始值为负,它也不会这样做。我怎样才能修改函数,以便它给我想要的结果。

示例 A

a = np.array([[  123.7   131.1 -4578.2 -4579.1 -4520.1 -4561.3 -4490.9 -4498.5 -4513.8
 -4550.9]])
a[a.size - (a >= 0)[::-1].argmax():] = 0
Output = [123.7 131.1   0.    0.    0.    0.    0.    0.    0.    0. ]

示例 B

b = np.array([-570.,  -593.37,   -286.59771,  -264.24308862])
b[b.size - (b >= 0)[::-1].argmax():] = 0
Output = [-570.,  -593.37,   -286.59771,  -264.24308862]
Desired Output = [0, 0, 0, 0]

标签: pythonarraysfunctionnumpyiterator

解决方案


您可以使用类似的方法来做到这一点:

b[(b>=0).argmin():] = 0

(它也适用于a


推荐阅读