如何生成包含随机大小、随机位置矩形区域的numpy二进制数组
二进制随机矩形numpy数组生成方案
实现思路
- 先创建指定尺寸的全0 numpy数组作为初始画布
- 按设定数量循环生成随机矩形:
- 随机生成矩形的高度、宽度
- 随机生成矩形左上角的坐标,确保矩形整体不会超出数组边界
- 直接将数组中矩形覆盖的区域赋值为1,重叠区域会自动保持为1,无需额外处理重叠逻辑
实现代码
import numpy as np def generate_binary_rect_array(arr_h, arr_w, rect_num=2, min_edge=2, max_edge=4): """ 生成带随机矩形的0-1二进制numpy数组 :param arr_h: 输出数组的高度 :param arr_w: 输出数组的宽度 :param rect_num: 生成的随机矩形数量 :param min_edge: 矩形边长最小值 :param max_edge: 矩形边长最大值 :return: 0-1二进制numpy数组 """ # 初始化全0数组 res = np.zeros((arr_h, arr_w), dtype=np.int8) for _ in range(rect_num): # 随机生成矩形宽高 rect_h = np.random.randint(min_edge, max_edge + 1) rect_w = np.random.randint(min_edge, max_edge + 1) # 随机生成左上角坐标,避免矩形越界 top = np.random.randint(0, arr_h - rect_h + 1) left = np.random.randint(0, arr_w - rect_w + 1) # 矩形区域赋值为1 res[top:top+rect_h, left:left+rect_w] = 1 return res
使用示例
# 生成5*5大小、包含2个随机矩形的数组 arr = generate_binary_rect_array(arr_h=5, arr_w=5, rect_num=2) print(arr)
如果需要更高概率出现重叠效果,只需调大rect_num参数(比如设为3~5),或者调大max_edge参数增加单矩形覆盖面积即可。
内容的提问来源于stack exchange,提问作者pietro_molina
相关产品推荐
相关产品推荐

