如何将列添加到numpy数组

时间:2019-12-01 09:56:46

标签: python numpy numpy-ndarray

如何在第二个numpy数组的开头添加仅包含“ 1”的列。

X = np.array([1, 2], [3, 4], [5, 6])

我想让X变成

[[1,1,2], [1,3,4],[1,5,6]]

4 个答案:

答案 0 :(得分:2)

  • 您可以使用np.insert

    new_x = np.insert(x, 0, 1, axis=1)
    
  • 您可以使用np.append方法将数组添加到1值列的右侧

    x = np.array([[1, 2], [3, 4], [5, 6]])
    ones = np.array([[1]] * len(x))
    new_x = np.append(ones, x, axis=1)
    

两者都会给您预期的结果

[[1 1 2]
 [1 3 4]
 [1 5 6]]

答案 1 :(得分:1)

尝试一下:

>>> X = np.array([[1, 2], [3, 4], [5, 6]])
>>> X
array([[1, 2],
       [3, 4],
       [5, 6]])

>>> np.insert(X, 0, 1, axis=1)
array([[1, 1, 2],
       [1, 3, 4],
       [1, 5, 6]])

答案 2 :(得分:0)

由于无论如何都会创建一个新数组,因此有时候从一开始就更容易做到。由于您希望一列的开头为1,因此可以使用内置函数以及输入数组的现有结构和dtype。

a = np.arange(6).reshape(3,2)               # input array
z = np.ones((a.shape[0], 3), dtype=a.dtype) # use the row shape and your desired columns
z[:, 1:] = a                                # place the old array into the new array
z
array([[1, 0, 1],
       [1, 2, 3],
       [1, 4, 5]])

答案 3 :(得分:0)

numpy.insert()将解决问题。

X = np.array([[1, 2], [3, 4], [5, 6]])
np.insert(X,0,[1,2,3],axis=1)

输出将是:

array([[1, 1, 2],
   [2, 3, 4],
   [3, 5, 6]])

请注意,第二个参数是要在其之前插入的索引。轴= 1表示要插入为一列而不会展平数组。

供参考: numpy.insert()