【问题标题】:Modifying arrays with Operators and Iteration Numpy Python使用运算符和迭代 Numpy Python 修改数组
【发布时间】:2021-05-11 18:27:29
【问题描述】:

函数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]

【问题讨论】:

  • 我认为数组 a 有一个额外的维度,因为我复制了您的代码并且它没有给我输出。你可以编辑它。

标签: python arrays function numpy iterator


【解决方案1】:

你可以用类似的方法做到这一点:

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

(也适用于a

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多