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

如何用NumPy向量化操作替代循环给图像多目标区域赋值

失效原因

你传入的array_of_y_indexing_arrays和array_of_x_indexing_arrays是包含100个长度不等一维数组的列表,NumPy的高级索引无法直接将这种不规则嵌套序列和形状为(100,)的data数组做广播匹配,因此赋值失败。

正确向量化实现

将所有索引和对应填充值统一拼接为一维数组后一次性赋值,所有操作均为NumPy原生实现,无Python层面循环,效率远高于原生遍历:

# 拼接所有y轴、x轴索引为连续的一维数组
all_y_indices = np.concatenate(array_of_y_indexing_arrays)
all_x_indices = np.concatenate(array_of_x_indexing_arrays)

# 统计每个目标的像素数量,将data中每个值重复对应次数
pixel_counts = [len(arr) for arr in array_of_y_indexing_arrays]
expanded_data = np.repeat(data, pixel_counts)

# 一次性完成所有位置的赋值
image[all_y_indices, all_x_indices] = expanded_data

额外注意

你提供的data初始化代码data = np.array((100,))存在错误,该代码会生成仅含单个元素100的数组,若要初始化长度为100的空数组,应写为data = np.empty(100)或data = np.zeros(100)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:24:03