You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成包含随机大小、随机位置矩形区域的numpy二进制数组

二进制随机矩形numpy数组生成方案

实现思路

  • 先创建指定尺寸的全0 numpy数组作为初始画布
  • 按设定数量循环生成随机矩形:
    1. 随机生成矩形的高度、宽度
    2. 随机生成矩形左上角的坐标,确保矩形整体不会超出数组边界
    3. 直接将数组中矩形覆盖的区域赋值为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:45:01