📅  最后修改于: 2023-12-03 15:18:03.687000             🧑  作者: Mango
numpy.ma.mask_rowcols()
函数是用于在给定数组的行和/或列中创建掩蔽数组的函数。
numpy.ma.mask_rowcols(arr, rowcol[, replace])
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()
函数可以轻松创建一个掩蔽数组来掩盖指定数组的行和列。