如何在Python中使用另一个数组来掩盖一个数组

如何在Python中使用另一个数组来掩盖一个数组

在这篇文章中,我们将学习如何在Python中使用另一个数组来屏蔽一个数组。在处理数据数组或数据框架时,掩码可能非常有用。掩码是一个包含给定条件的布尔值列表的数组。被屏蔽的数组是有无效或缺失条目的数组。

使用数组的屏蔽,我们可以很容易地处理数组或数据集/数据帧中的缺失、无效或不需要的条目。屏蔽的基本原理是使用布尔值列表,即True或False,当应用于原始数组时,返回感兴趣的元素,这里True指的是满足给定条件的值,而False指的是不满足该条件的值。

我们可以通过使用以下函数,用另一种方式来掩盖数组:-

numpy.ma.masked_where(condition, arr)
numpy.ma.getmask(arr)
numpy.ma.masked_array(arr, mask=)

其中,

condition:掩盖的条件

arr: 被掩盖的数组

mask:被掩码数组的结果

需要的步骤

  • 导入library。
  • 创建一个用于屏蔽的函数。
  • 遮蔽可以通过以下两种方法完成:
    • 使用masked_where()函数。在函数中传递两个数组作为参数,然后使用numpy.ma.masked_where()函数,其中传递屏蔽的条件和要屏蔽的数组。在这里,我们通过使用一个数组给出屏蔽的条件,并为该条件屏蔽另一个数组。
    • 使用 masked_where(), getmask()和 masked_array()函数。在函数中传递两个数组作为参数,然后使用numpy.ma.masked_where()函数,在该函数中传递掩蔽条件和要掩蔽的数组,在此我们使用相同的数组,为其提供制作条件和要掩蔽的数组,并将结果存储在变量中,然后使用numpy.ma.getmask()函数,其中传递mark_where函数的结果并将其存储在名为 “res_mask “的变量。现在使用创建的掩码掩盖另一个数组,为此,我们使用numpy.ma.masked_array()函数,其中传递要创建的数组和参数mask=’res_mask’,使用另一个数组创建数组,并将其存储在一个变量中,命名为’masked’。
  • 然后从函数中返回被屏蔽的。

  • 现在创建主函数
  • 创建两个数组,一个用于掩盖另一个。
  • 然后调用我们在上面创建的函数,并将函数中的两个数组作为参数传递,将结果存储在一个名为 “masked “的变量中。
  • 现在为了将数组作为一个1-d数组,我们使用numpy.ma.compressed(),它将掩码作为一个参数传递。
  • 然后打印Masked 数组。

例子1:用第一阵列进行屏蔽

在上面的例子中,我们是根据第一个数组mod 7的每个元素为真的条件,用第二个数组来掩盖第一个数组,那些在该索引元素处满足条件的元素在第一个数组中被掩盖。

由于我们有数组1=[1,2,4,5,7,8,9]和数组2=[10,12,14,5,7,0,13],我们已经给出了条件array2%7,所以在数组2中,元素14,7和0满足条件,它们出现在索引2,4和5,所以在数组1的相同索引的元素被屏蔽了,所以结果数组有[4 7 8]。

# importing the library
import numpy as np
  
# function to create masked array
def masking(ar1, ar2):
    
  # masking the array1 by using array2 
  # where array2 mod 7 is true
  mask = np.ma.masked_where(ar2%7,ar1)
    
  return mask
  
# main function
if __name__ == '__main__':
    
  # creating two arrays
  x = np.array([1,2,4,5,7,8,9])
  y = np.array([10,12,14,5,7,0,13])
    
  # calling masking function to get 
  # masked array
  masked = masking(x,y)
    
  # getting the values as 1-d array which 
  # are non masked 
  masked_array = np.ma.compressed(mask)
  
  # printing the resultant array after masking
  print(f'Masked Array is:{masked_array}')

输出:

如何在Python中使用另一个数组来掩盖一个数组?

例子2:用第一个数组掩盖第二个数组

在上面的例子中,我们是用第一个数组来屏蔽第二个数组,给出条件array1<5意味着array1中小于5的元素满足条件,该元素的索引将被屏蔽在第二个数组中。

因为我们有array1 = [1,2,4,5,7,8,9]和array2 = [10,12,14,5,7,0,13],所以在array1中,元素1,2和4小于5,这些元素存在于索引0,1和2,所以这个元素满足条件,所以在array2中存在于相同索引的元素被屏蔽了,我们使用numpy.ma.compressed()函数,这个函数返回非屏蔽数值。因此,我们在屏蔽后有[5 7 0 10]。

# importing the library
import numpy as np
  
# function to create masked array
def masking(ar1, ar2):
  
    # masking the array2 by using array1
    # where condition array1 is less than
    # 5 is true
    mask = np.ma.masked_where(ar1 < 5, ar2)
  
    return mask
  
  
# main function
if __name__ == '__main__':
  
    # creating two arrays
    x = np.array([1, 2, 4, 5, 7, 8, 9])
    y = np.array([10, 12, 14, 5, 7, 0, 13])
  
    # calling masking function to get
    # masked array
    masked = masking(x, y)
  
    # getting the values as 1-d array which 
    # are non masked
    masked_array = np.ma.compressed(mask)
  
    # printing the resultant array after masking
    print(f'Masked Array is:{masked_array}')

输出:

如何在Python中使用另一个数组来掩盖一个数组?

例子3:通过getmask()函数用第二个数组屏蔽第一个数组

在上面的例子中,为了使用第二个数组制作第一个数组的掩码,首先我们通过给ar2提供条件ar2%3来创建第二个数组的掩码。然后我们使用numpy.ma.getmask()函数,将创建的掩码结果传给该函数,然后我们使用numpy.ma.masked array()创建第一个数组的掩码,其中传给ar1并传给掩码=res_mask,这是数组2的掩码。

通过这种方式,我们可以用另一个数组对一个数组进行屏蔽。

# importing the library
import numpy as np
  
# function to create masked array
def masking(ar1, ar2):
  
    # creating the mask of array2 where
    # condition array2 mod 3 is true
    mask = np.ma.masked_where(ar2 % 3, ar2)
  
    # getting the mask of the array
    res_mask = np.ma.getmask(mask)
  
    # masking the array1 with the result 
    # of mask of array2
    masked = np.ma.masked_array(ar1, mask=res_mask)
  
    return masked
  
  
# main function
if __name__ == '__main__':
      
    # creating two arrays
    x = np.array([1, 2, 4, 5, 7, 8, 9])
    y = np.array([10, 12, 14, 5, 7, 0, 12])
  
    # calling masking function to get masked
    # array
    masked = masking(x, y)
    masked_array = np.ma.compressed(masked)
  
    # printing the resultant array after masking
    print(f'Masked Array is:{masked_array}')

输出:

如何在Python中使用另一个数组来掩盖一个数组?

例子4:通过getmask()函数用第一个数组屏蔽第二个数组

在上面的例子中,为了使用第一个数组制作第二个数组的掩码,首先我们通过给ar1设定条件ar1<4来创建第一个数组的掩码。然后我们使用numpy.ma.getmask()函数,将创建的掩码结果传给该函数,然后我们使用numpy.ma.masked_array()创建第二个数组的掩码,其中传给ar2并传给掩码=res_mask,这是数组1的掩码。

通过这种方式,我们可以用另一个数组对一个数组进行屏蔽。

# importing the library
import numpy as np
  
# function to create masked array
def masking(ar1, ar2):
  
    # creating the mask of array2 where
    # condition array2 mod 3 is true
    mask = np.ma.masked_where(ar2 % 3, ar2)
  
    # getting the mask of the array
    res_mask = np.ma.getmask(mask)
  
    # masking the array1 with the result of 
    # mask of array2
    masked = np.ma.masked_array(ar1, mask=res_mask)
  
    return masked
  
  
# main function
if __name__ == '__main__':
      
    # creating two arrays
    x = np.array([1, 2, 4, 5, 7, 8, 9])
    y = np.array([10, 12, 14, 5, 7, 0, 12])
  
    # calling masking function to get
    # masked array
    masked = masking(x, y)
    masked_array = np.ma.compressed(masked)
  
    # printing the resultant array after masking
    print(f'Masked Array is:{masked_array}')

输出:

如何在Python中使用另一个数组来掩盖一个数组?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程