追加 numpy 一维数组不会导致矩阵

Append numpy one dimensional arrays does not lead to a matrix

我试图通过随机生成它的行并附加

来获得一个二维数组
   import numpy as np
   my_nums =  np.array([])
    for i in range(100):
      x = np.random.rand(2, 1)
      my_nums = np.append(my_nums, np.array(x))

但我没有得到我想要的,而是得到一个一维数组。

怎么了? 转置 x 也无济于事。

您可以使用 np.append(axis=0)np.vstack 来完成此操作。然而,这要求附加的行与数组中已有的行具有相同的长度。

您不能使用相同的代码将具有两个值的行追加到一个空数组,并将一行追加到已经存在的二维数组:numpy 将抛出一个 ValueError: all the input arrays must have same number of dimensions.

您可以初始化 my_nums 来解决这个问题:

my_nums = np.random.rand(1, 2)
for i in range(99):
    x = np.random.rand(1, 2)
    my_nums = np.append(my_nums, x, axis=0)

请注意,由于初始化行,范围减少了一位。另请注意,我将维度更改为 (1, 2) 以获得实际的行向量。

当然,创建所需最终形状的数组比逐行追加容易得多:

my_nums = np.random.rand(100, 2)