技术文章和资源

技术文章(时间排序)

热门类别

Python PHP MySQL JDBC Linux

Python - 在 numpy 数组中用零替换负值

pythonnumpyserver side programmingprogramming

在本文中,我们将看到用零替换负值的方法。如果我们谈论数据分析,那么处理负值是确保有意义的计算的关键步骤。因此,在这里您将了解各种方法,我们可以使用这些方法将负值替换为 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("替换值的数组为: ", arr)

输出

替换值的数组为: [ 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("替换值的数组为: ", arr)

输出

替换值的数组为: [ 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("替换值的数组为: ", arr)

输出

替换值的数组为: [ 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("替换值的数组为: ", arr)

输出

替换值的数组为: [ 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("替换值的数组为: ", arr)

输出

替换值的数组为: [ 0 32 0 42 0 88]

解释

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

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


相关文章