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

如何将值赋给Numpy数组中由另一数组指定的索引?

解决NumPy数组指定索引位置赋值问题

首先先明确你的数组定义,确保a是NumPy数组(不是普通列表),b是3×3的全零数组:

import numpy as np

a = np.array([1, 4, 6])
b = np.zeros((3, 3), dtype=int)  # dtype可根据需求调整,比如float
v = 5  # 示例赋值的目标值

方法一:用flat属性直接操作一维索引

NumPy数组的flat属性可以把多维数组展平成一维的可索引对象,直接用a里的索引值赋值最简洁:

b.flat[a] = v

执行后b的结果:

[[0 5 0]
 [0 5 0]
 [5 0 0]]

方法二:拆分二维坐标赋值

如果需要明确操作二维的行和列,可以把一维索引转换成行、列坐标:

  • 行索引 = 一维索引 ÷ 列数(这里是3,整数除法)
  • 列索引 = 一维索引 % 列数

代码实现:

rows = a // 3
cols = a % 3
b[rows, cols] = v

效果和方法一完全一致。

你原来代码的问题

  1. range(a)完全错误:range()只接受整数参数,不能传入数组或列表;
  2. 哪怕遍历a的元素,直接b[x] = v会把整行赋值为v,因为b是二维数组,b[x]取的是第x行,而不是单个元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:40:30