以下是一个示例代码,用于在保持形状的情况下对2D数组进行屏蔽:
import numpy as np
def mask_2d_array(arr, mask):
# 获取原数组的形状
rows, cols = arr.shape
# 创建一个全零的数组作为屏蔽后的结果
masked_arr = np.zeros((rows, cols), dtype=arr.dtype)
# 根据屏蔽数组中的元素对原数组进行屏蔽
masked_arr[mask] = arr[mask]
return masked_arr
# 示例用法
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
mask = np.array([[False, True, False], [True, False, True], [False, True, False]])
masked_arr = mask_2d_array(arr, mask)
print(masked_arr)
输出结果为:
[[0 2 0]
[4 0 6]
[0 8 0]]
在示例中,mask_2d_array
函数接受一个2D数组arr
和一个布尔类型的屏蔽数组mask
作为输入。函数首先获取arr
的形状,并创建一个和arr
相同形状的全零数组masked_arr
作为结果。然后,根据mask
中的元素将arr
中对应位置的元素复制到masked_arr
中。最后,函数返回屏蔽后的结果数组masked_arr
。
在上述示例中,原数组arr
的形状是3行3列,屏蔽数组mask
的形状也是3行3列。根据mask
中的True
值,将arr
中对应位置的元素复制到masked_arr
中。最终的结果是将arr
中第1行第2列、第2行第1列、第2行第3列、第3行第2列的元素保留,其他位置的元素置为0。
上一篇:保持行号与换行的行保持同步