Python - NumPy数组中用零替换负值


在本文中,我们将了解如何用零替换负值。如果我们谈论数据分析,那么处理负值是确保有意义的计算的关键步骤。因此,在这里您将学习各种方法,我们可以用这些方法将负值替换为0。

方法1. 使用遍历和列表推导式。

示例

import numpy as np

arr = np.array([-12, 32, -34, 42, -53, 88])
arr = [0 if x < 0 else x for x in arr]
arr = np.array(arr)
print("array with replaced values is: ", arr)

输出

array with replaced values is: [ 0 32 0 42 0 88]

解释

在上面的示例中,我们使用列表推导式方法遍历NumPy数组arr中的每个元素。在遍历数组时,我们检查当前值是否为负(x<0),如果是,则将其替换为零,否则我们将不更改它。修改后,我们将数组转换回NumPy数组。

方法2. 使用Numpy.vectorize()。

示例

import numpy as np

arr = np.array([-12, 32, -34, 42, -53, 88])
def replace_negative_value(x):
   return 0 if x < 0 else x

replace_func = np.vectorize(replace_negative_value)
arr = replace_func(arr)
print("array with replaced values is: ", arr)

输出

array with replaced values is: [ 0 32 0 42 0 88]

解释

在上面的示例中,我们使用了函数numpy.vectorize(),它允许我们对NumPy数组的每个元素应用自定义函数。我们定义了一个函数replace_negative_value(),它将用零替换负值。然后使用np.vectorize()方法,我们创建了该函数的矢量化版本,以将其应用于数组。

方法3. 使用Numpy.clip()。

示例

import numpy as np
arr = np.array([-12, 32, -34, 42, -53, 88])
arr = np.clip(arr, 0, None)
print("array with replaced values is: ", arr)

输出

array with replaced values is: [ 0 32 0 42 0 88]

解释

在上面的示例中,我们使用了numpy.clip()方法,我们可以用它将值限制在任何定义的范围内。在我们的程序中,我们将值0定义为下界,并将None定义为上界,因此它可以接受任何较大的正值,但在负值的情况下,它将把负值替换为0。

方法4. 使用Numpy.where()。

示例

import numpy as np

arr = np.array([-12, 32, -34, 42, -53, 88])
arr = np.where(arr < 0, 0, arr)
print("array with replaced values is: ", arr)

输出

array with replaced values is: [ 0 32 0 42 0 88]

解释

在上面的示例中,我们使用了numpy.where()方法,我们可以用它提供任何条件替换方法。在我们的程序中,我们提供了条件arr<0,并且我们在该条件为真的情况下用0替换了数组的值。如果条件不满足,则值将保持不变。

方法5. 使用Numpy.maximum()。

示例

import numpy as np

arr = np.array([-12, 32, -34, 42, -53, 88])
arr = np.maximum(arr, 0)
print("array with replaced values is: ", arr)

输出

array with replaced values is: [ 0 32 0 42 0 88]

解释

在上面的示例中,我们使用了函数numpy.maximum(),它比较两个数组的元素并返回其中的最大值。在我们的程序中,我们正在将数组的每个元素与0进行比较,并选择最大值,这肯定将负值替换为0,因为0将是最大值,因此函数将返回0,并且负值将被0替换。

因此,我们看到了不同的方法,我们可以用这些方法将数组的任何负值替换为0。在本文中,我们了解了诸如遍历、列表推导式、数学运算等方法,这些方法为我们提供了有效替换负值的方法。您可以选择最符合您的需求和可读性的任何方法。

更新于: 2023年10月3日

2K+ 浏览量

启动你的职业生涯

通过完成课程获得认证

开始学习
广告