如何将数组存入Numpy数组的指定位置并解决赋值报错
报错原因
你创建的b是形状为(2,2)的数值类型numpy数组,每个位置只能存储单个标量值,而你尝试将形状为(2,2)的二维数组a赋值给b[0,0]这单个元素位置,维度不匹配因此触发报错。
解决方案
方案1:将a作为单个元素存入b的指定位置
如果你确实需要把整个数组a当成一个元素存进b的对应位置,需要将b声明为object类型,允许存储非数值类型的元素:
import numpy as np # 声明b为object类型数组 b = np.zeros([2, 2], dtype=object) a = np.array([[0, 1], [1, 2]]) b[0, 0] = a print(b)
运行输出:
[[array([[0, 1], [1, 2]]) 0] [0 0]]
方案2:将a的数值填充到b的对应区域
如果你的需求是把a里的所有数值对应写入b的指定块区域(比如把2x2的a写到b的左上角区域),需要对b做对应大小的切片赋值,这种场景下如果要容纳a的内容,需要把b的尺寸设置的比a大:
import numpy as np # 把b设置为4x4的数组,足够放下2x2的a b = np.zeros([4, 4]) a = np.array([[0, 1], [1, 2]]) # 取b的0~2行、0~2列的切片,对应形状为2x2,和a匹配 b[0:2, 0:2] = a print(b)
运行输出:
[[0. 1. 0. 0.] [1. 2. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]
内容的提问来源于stack exchange,提问作者JVera
相关产品推荐
相关产品推荐

