将值附加到numpy数组中的每个数组

时间:2018-11-21 18:48:11

标签: python arrays numpy

我有一个numpy的数组数组,例如:

x = np.array([[1,2,3],[10,20,30]])

现在让我说我想用[4,40]扩展每个数组,以生成以下结果数组:

[[1,2,3,4],[10,20,30,40]]

如何在不复制整个数组的情况下执行此操作?我试图更改数组的形状,但是会引发ValueError:

x[0] = np.append(x[0],4)
x[1] = np.append(x[1],40)
ValueError : could not broadcast input array from shape (4) into shape (3)

2 个答案:

答案 0 :(得分:3)

您不能这样做。如果可能的话,Numpy数组会分配连续的内存块。数组大小的任何更改都将导致整个数组的副本效率低下。如果可能,应该使用Python列表来扩展结构,然后将最终结果转换回数组。

但是,如果您知道结果数组的最终大小,则可以使用np.empty()之类的实例化它,然后通过索引分配值,而不是附加值。这不会更改数组本身的大小,只会重新分配值,因此不需要复制。

答案 1 :(得分:0)

  1. 创建一个新矩阵
  2. 插入旧矩阵的值
  3. 然后,在最后位置插入新值

    x = np.array([[1,2,3],[10,20,30]])
    new_X = np.zeros((2, 4))
    new_X[:2,:3] = x 
    new_X[0][-1] = 4
    new_X[1][-1] = 40
    x=new_X
    

或者改用np.reshape()或np.resize()