我有一个numpy数组:
X = np.array([[1,0,1],
[1,1,1],
[0,1,0],
[1,0,1]])
形状为(4,3)
我想通过以下方式将这种形状更改为(4,4)
:将数组的第二维加1:
X_b = np.ones((X.shape+(0,1)))
但是我得到的是:
ValueError: could not broadcast input array from shape (4,3) into shape (4,2,0,1)
正确的方法是什么?
如果X_b
,我基本上希望(4,4)
的形状为X.shape = (4,3)
答案 0 :(得分:1)
要修复代码,请执行以下操作:
X_b = np.ones(X.shape + np.array((0,1)))
这里的要点是X.shape
返回一个普通的Python tuple
。通过添加(0,1)
,您实际上是在执行元组串联,而不是按预期的成对加法。
当然,您也可以使用append
在现有阵列上附加一列:
X_b = np.append(X, [[1]]*X.shape[0], axis=1)