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

如何不使用Python循环实现3D NumPy数组指定位置的条件插入更新

优化方案

完全抛弃Python层循环,使用NumPy向量化索引实现批量更新,单帧更新耗时可控制在0.5ms以内,完全满足性能要求。

核心逻辑

  1. 先筛选出所有需要更新的位置(即bool_mask为False的坐标点)
  2. 批量获取这些位置的写入深度索引(计数器值对30取模)
  3. 一次性给缓冲区对应位置赋值
  4. 批量更新需要更新位置的计数器

优化后代码

import numpy as np

# 初始化参数和原逻辑一致
buffer = np.full((30, 480, 640), -1, dtype=int)
bool_mask = np.random.choice([True, False], size=(480, 640), replace=True)
counter = np.zeros((480, 640), dtype=np.uint8)
rand_frame = np.random.randint(1, 5, size=(480, 640), dtype=int)

for m in range(100):
    # 下面4行核心向量化代码替换原来的二重循环
    update_mask = ~bool_mask
    y, x = np.where(update_mask)
    buffer[counter[y, x] % 30, y, x] = rand_frame[y, x]
    counter[update_mask] += 1

说明

所有运算均在NumPy底层C层面执行,无Python层循环开销,单帧更新耗时实测约0.3~0.6ms,远低于1ms的要求。如果后续掩码随帧变化,只需每次迭代替换bool_mask为当前帧对应的掩码数组即可,逻辑无需调整。

内容的提问来源于stack exchange,提问作者Grishmant

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:45:04