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

如何使用numpy根据数组a的索引将数组b对应位置设为1?

高效实现数组索引替换的方法

如果用Python实现,推荐用numpy的向量化操作,完全不需要显式暴力遍历,底层由C优化执行,效率远高于原生列表循环。

实现步骤与代码:

  1. 将原生列表转换为numpy数组,利用numpy的批量索引能力
  2. 生成匹配的维度索引,直接对目标位置赋值为1
  3. 如需转回原生列表,调用.tolist()方法即可
import numpy as np

# 原始数组
a = [[1, 2]]
b = [[[0,0,0],[0,0,0]]]

# 转为numpy数组
np_a = np.array(a)
np_b = np.array(b)

# 生成行索引:对应b的第二维度元素位置
row_indices = np.arange(np_a.shape[1])

# 批量定位并赋值
np_b[0, row_indices, np_a[0]] = 1

# 转回原生列表(可选)
r = np_b.tolist()
print(r)
# 输出:[[[0, 1, 0], [0, 0, 1]]]

原理说明:

numpy的索引是向量化的,np_b[0, row_indices, np_a[0]]会一次性定位到b[0][0][1]和b[0][1][2]这两个目标位置,直接完成赋值操作,全程没有Python层面的循环,数据量越大,效率优势越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:57:02