📜  numpy.ma.mask_rowcols()函数| Python(1)

📅  最后修改于: 2023-12-03 15:18:03.687000             🧑  作者: Mango

numpy.ma.mask_rowcols()函数 | Python

numpy.ma.mask_rowcols() 函数是用于在给定数组的行和/或列中创建掩蔽数组的函数。

语法
numpy.ma.mask_rowcols(arr, rowcol[, replace])
参数
  • arr : ndarray,输入数组。
  • rowcols : int、tuple,要创建掩蔽值的行和/或列的索引或索引的序列。
  • replace : bool, 可选参数,用于指定是否使用替代方式创建新的掩码数组。
返回值

mask_rowcols() 函数返回新的掩蔽数组。

示例
import numpy.ma as ma
import numpy as np

a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, np.nan, 9]])

m = ma.mask_rowcols(a, (1, 2))

print(m)

输出:

[[False  True  True]
 [ True  True  True]
 [False False False]]

掩蔽数组的值与输入数组的相同,但在行2和列3中,掩蔽值被设置为True!

a = np.array([[(1, 0), (2, 3)],
              [(4, 2), (3, 1)],
              [(7, 6), (6, np.nan)]])

m = ma.mask_rowcols(a, rowcols=0)

print(m)

输出:

[[[ True  True]
  [False False]]

 [[ True  True]
  [False False]]

 [[False False]
  [False False]]]

掩蔽数组中,第一列的所有元素都被设置为True,输出数组中所有的(1, 0), (4,2)和(7,6)都被掩蔽了!

a = np.array([[(1, 0), (2, 3)],
              [(4, 2), (3, 1)],
              [(7, 6), (6, np.nan)]])

m = ma.mask_rowcols(a, rowcols=(1, 2), replace=True)

print(m)

输出:

[[[ True  True]
  [ True  True]]

 [[False False]
  [ True  True]]

 [[ True  True]
  [ True False]]]

在前一个示例中,我们只掩盖了第一列。 但是,如果我们想掩盖第二个和第三个列,则可以将rowcols设置为(1,2)。 请注意,我们还将replace设置为True,这将创建一个全新的掩蔽数组,而不是使用现有的。 可以看到,第二个和第三个列现在包含True,表示它们已被掩盖了。

安排好了我们的行和列,让我们掩盖它们,并比较掩盖前后的数组的结果。

a = np.array([[(1, 0), (2, 3)],
              [(4, 2), (3, 1)],
              [(7, 6), (6, np.nan)]])

mask1 = ma.getmask(a)
mask2 = ma.getmask(m)
print("Original Array:\n", a)
print("Masked Array:\n", ma.masked_array(a, mask1))
print("Masked and Re-masked Array:\n", ma.masked_array(ma.masked_array(a, mask1), mask2))

输出:

Original Array:
 [[[1 0]
  [2 3]]

 [[4 2]
  [3 1]]

 [[7 6]
  [6 --]]]
  
Masked Array:
 [[[1 0]
  [2 3]]

 [[4 2]
  [3 1]]

 [[7 6]
  [6 --]]]
  
Masked and Re-masked Array:
 [[[-- --]
  [ 2  3]]

 [[-- --]
  [ 3  1]]

 [[ 7  6]
  [-- --]]]

从结果可以看到,原始数组与初始的掩盖器(mask1)相同。 掩蔽和重新掩蔽后的数组与掩蔽后的数组(ma.masked_array(a, mask1))相同。 但是,有一些值已被掩盖(例如第一列元素、第二行中的最后一个元素)。

异常

如果提供的数据类型无效,则 TypeError

解决方案

使用 numpy.ma.mask_rowcols() 函数可以轻松创建一个掩蔽数组来掩盖指定数组的行和列。