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

如何为Numpy数组的指定部分赋值?运行代码报TypeError怎么解决

报错原因

你代码里定义的a = [[1, 2],[3,4]]是Python原生嵌套列表,并非Numpy数组,多维切片语法[:, 1:]是Numpy数组的特有能力,原生列表仅支持单维度的整数或切片索引。当你使用逗号分隔多维度索引时,Python会自动将其解析为元组传入列表的索引方法,原生列表无法识别该参数类型,因此抛出对应的类型错误。

解决方法

有两种常用的修复方案:

  • 方案1:将原生列表a转换为Numpy数组后再进行切片操作
    import numpy as np
    a = np.array([[1, 2],[3,4]])
    b = np.zeros(shape=(2,2))
    b[:, 1:] = a[:,1:]
    
  • 方案2:保持a为原生列表,用列表推导式提取对应维度的元素再赋值
    import numpy as np
    a = [[1, 2],[3,4]]
    b = np.zeros(shape=(2,2))
    b[:, 1:] = [row[1:] for row in a]
    

两种方案运行后,b的最终结果均为:

[[0. 2.]
 [0. 4.]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:54:04