python - 使用运算符和迭代 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]
解决方案
您可以使用类似的方法来做到这一点:
b[(b>=0).argmin():] = 0
(它也适用于a
)
推荐阅读
- c# - 我想在进度条上标记一些进度事件
- python - 我在使用烧瓶的 python 中遇到语法错误,我不知道为什么
- c++ - 输入向量
- python - False Boolean 未在 proto3 Python 中显示
- vectorization - 如何使用从训练数据创建的 Document-Term Matrix 表示测试集中的文档?(潜在语义索引)
- c++ - 字符串项目中重载运算符时出错 [已解决]
- javascript - 循环 Google 工作表 - 仅返回最后一行
- kubernetes - 如何更新 istio 的 helm 安装以启用 'Kubernetes Ingress with Cert-Manager' 或 'enable SDS at ingress gateway'
- javascript - 如何获取输入字段的更新值?
- azure-logic-apps - 如何通过 terraform 将逻辑应用程序链接到集成服务环境