以下是一个示例代码,用于在保持形状的情况下对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。
上一篇:保持行号与换行的行保持同步