替换不满足给定条件的NumPy数组元素

替换不满足给定条件的NumPy数组元素

有时在Numpy数组中,我们想应用某些条件来过滤掉一些值,然后替换或删除它们。这些条件可以是:如果某些值大于或小于一个特定的常数,那么就用其他的数字替换所有这些值。

为此,我们可以使用”>”、”<“等关系运算符和numpy.where()等其他函数。

方法1:使用关系运算符

实例1:在一维Numpy数组中

# Importing Numpy module
import numpy as np
  
# Creating a 1-D Numpy array
n_arr = np.array([75.42436315, 42.48558583, 60.32924763])
print("Given array:")
print(n_arr)
  
print("\nReplace all elements of array which are greater than 50. to 15.50")
n_arr[n_arr > 50.] = 15.50
  
print("New array :\n")
print(n_arr)

输出:

替换不满足给定条件的NumPy数组元素

在上述问题中,我们在一维Numpy数组中用15.50替换所有大于50的值。

实例2(A):在2-D Numpy数组中

# Importing Numpy module
import numpy as np
  
# Creating a 2-D Numpy array
n_arr = np.array([[45.42436315, 52.48558583, 10.32924763],
                  [5.7439979, 50.58220701, 25.38213418]])
print("Given array:")
print(n_arr)
  
print("\nReplace all elements of array which are greater than 30. to 5.25")
n_arr[n_arr > 30.] = 5.25
  
print("New array :\n")
print(n_arr)

输出:

替换不满足给定条件的NumPy数组元素

在上述问题中,我们在二维Numpy数组中用5.25替换所有大于30的值。

例子3:在3-D Numpy数组中

# Importing Numpy module
import numpy as np
  
# Creating a 3-D Numpy array
n_arr = np.array([[[11, 25.5, 70.6], [30.9, 45.5, 55.9], [20.7, 45.8, 7.1]],
                  [[50.1, 65.9, 8.2], [70.4, 85.8, 10.3], [11.3, 22.2, 33.6]],
                  [[19.9, 69.7, 36.8], [1.2, 5.1, 24.4], [4.9, 20.8, 96.7]]])
  
print("Given array:")
print(n_arr)
  
print("\nReplace all elements of array which are less than 10 to Nan")
n_arr[n_arr < 10.] = np.nan
  
print("New array :\n")
print(n_arr)

输出:

替换不满足给定条件的NumPy数组元素

在上面的问题中,我们将3-D Numpy数组中所有小于10的数值替换为Nan。

方法2:使用 numpy.where()

它返回一个输入数组中满足给定条件的元素的索引。

示例 1:

# Importing Numpy module
import numpy as np
  
# Creating a 2-D Numpy array
n_arr = np.array([[45, 52, 10],
                  [1, 5, 25]])
  
print("Given array:")
print(n_arr)
  
print("\nReplace all elements of array which are \
greater than or equal to 25 to 0")
  
print("else remains the same ")
print(np.where(n_arr >= 25, 0, n_arr))

输出:

替换不满足给定条件的NumPy数组元素

在上述问题中,我们将所有大于或等于25的数值替换为0,其他保持不变。

示例 2:

# Importing Numpy module
import numpy as np
  
# Creating a 2-D Numpy array
n_arr = np.array([[45, 52, 10],
                  [1, 5, 25],
                  [50, 40, 81]])
  
print("Given array:")
print(n_arr)
  
print("\nReplace all elements of array which are \
less than or equal to 25 with Nan")
  
print("else with 1 ")
print(np.where(n_arr <= 25, np.nan, 1))

输出:

替换不满足给定条件的NumPy数组元素

在上述问题中,我们将所有小于或等于25的数值替换为Nan,否则为1。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程