Добавление однослойных одномерных массивов не приводит к матрице - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь получить массив 2d, случайным образом генерируя его строки и добавляя

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

Но я не получаю то, что хочу, а вместо этого получаю массив 1d.

Чтонеправильно?Транспонирование x тоже не помогло.

1 Ответ

1 голос
/ 27 марта 2019

Вы можете сделать это, используя np.append(axis=0) или np.vstack.Однако для этого требуется, чтобы добавляемые строки имели ту же длину, что и строки в массиве.

Нельзя использовать один и тот же код для добавления строки с двумя значениями в пустой массив и добавления строки куже существующий 2D-массив: 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...