根据特定条件更改一维 numpy 数组的值

you*_*rja 0 python numpy vectorization

非常基本的问题:

假设我有一个包含 5 个元素的一维 numpy 数组 (A):

A = np.array([ -4.0, 5.0, -3.5, 5.4, -5.9])

我需要向 A 的所有小于零的元素添加 5。没有 for 循环的 numpy 方法是什么?

Eli*_*sha 5

可以使用掩码来完成:

A[A < 0] += 5
Run Code Online (Sandbox Code Playgroud)

它的工作方式是 - 表达式A < 0返回一个布尔数组。每个单元格对应于应用于匹配单元格的谓词。在当前示例中:

A < 0  # [ True False  True False  True]  
Run Code Online (Sandbox Code Playgroud)

然后,该操作仅应用于与谓词匹配的单元格。所以在这个例子中,它只适用于True单元格。