如何为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
相关产品推荐
相关产品推荐

