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

如何利用索引列表设置NumPy多维ndarray对应位置的元素值?

解决NumPy多维数组通过索引列表设置元素的问题

嘿,我懂你这会儿的困惑!你手里有个对应各轴的索引列表,想实现和直接写A[1, 0] = 1完全一样的效果对吧?其实有两种简单的方法能搞定:

方法一:把索引列表转成元组(最稳妥通用)

NumPy的多维索引本质上是接受元组作为索引参数的,而你手里的列表没法直接被识别成多维索引,所以只需要把列表转成元组就行:

import numpy as np

A = np.zeros((2, 2))
idxs = [1, 0]
# 把列表转成元组,直接代入索引
A[tuple(idxs)] = 1

print(A)

运行后你会得到想要的结果:

array([[0., 0.],
       [1., 0.]])

方法二:用解包运算符*(Python 3.5+适用)

如果你用的是Python 3.5及以上版本,还可以直接用*把列表里的元素展开成多个索引参数,效果和直接写A[1,0]完全一致:

import numpy as np

A = np.zeros((2, 2))
idxs = [1, 0]
# 解包列表元素作为索引
A[*idxs] = 1

print(A)

这个代码的输出和上面完全一样。

为啥直接用A[idxs]不行?

这里顺便给你解释下坑点:如果你直接写A[idxs],NumPy会把这个列表当成是对第一个轴的索引,也就是会取出A[1]和A[0]这两行,得到的是一个切片数组,而不是你要的单个元素,自然赋值结果就不对啦。所以必须把索引转换成NumPy能识别的多维索引格式才行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:23:13