numpy数组赋值时遇形状不匹配ValueError,求正确赋值方法
Numpy数组赋值维度不匹配问题的解决办法
错误原因
你遇到的ValueError源于维度不兼容:
a[:,1]选取的是数组a的第二列,其形状为(3,)(一维数组)- 待赋值的
np.array([[3],[3],[3]])形状是(3,1)(二维数组)
numpy无法将二维数组直接广播到一维的目标位置,因此触发报错。
解决方法
以下是两种可行的修正方案:
方案1:将赋值数组转为一维
通过展平操作把二维数组转换成和目标维度一致的一维数组:
import numpy as np a = np.zeros((3,2)) # 使用ravel()展平数组 a[:,1] = np.array([[3],[3],[3]]).ravel()
或者直接提取二维数组的列来获取一维数组:
a[:,1] = np.array([[3],[3],[3]])[:,0]
方案2:修改目标切片为二维
调整切片方式,让目标的形状和赋值数组一致(均为(3,1)):
import numpy as np a = np.zeros((3,2)) # 使用[:,1:2]选取第二列(保持二维形状) a[:,1:2] = np.array([[3],[3],[3]])
内容的提问来源于stack exchange,提问作者Kinnikuman
相关产品推荐
相关产品推荐

