根据特定条件

时间:2017-09-03 10:52:17

标签: python numpy vectorization

非常基本的问题:

假设我有一个包含5个元素的1D numpy数组(

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

我需要在A的所有元素中添加5,小于零。如果没有for-looping,这样做的numpy方法是什么?

2 个答案:

答案 0 :(得分:4)

可以使用mask完成:

A[A < 0] += 5

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

A < 0  # [ True False  True False  True]  

然后,该操作仅应用于与谓词匹配的单元格。因此,在此示例中,它仅适用于True单元格。

答案 1 :(得分:0)

我找到了另一个答案:

domain