通过添加现有阵列的形状来创建阵列

时间:2018-11-21 20:11:17

标签: python arrays numpy shapes

我有一个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)

1 个答案:

答案 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)