NumPy Pad с нулями создает 2d массив вместо желаемого 1d - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь заполнить 1-мерный массив нулями.

Вот мой код

v = np.random.rand(100, 1)
pad_size = 100
v = np.pad(v, (pad_size, 0), 'constant')

результат - массив 200x101, последний столбец которого [0,0,0, ... <v>], (ведущие 100 нулей), и все первые 100 столбцов являются нулями.

Как получить желаемый массив

[0,0,0, .. 0 <v>]

размера (len (v) + pad_size, 1)?

Ответы [ 2 ]

2 голосов
/ 02 июня 2019

Выход pad является 2D, потому что вход pad был 2D.По какой-то причине вы создали двумерный массив с rand:

v = np.random.rand(100, 1)

Если вы хотели 1D-массив, вы должны были создать 1D-массив:

v = np.random.rand(100)

Если вы хотели2D-массив из 1 столбца, то вы неправильно используете pad.Второй аргумент должен быть ((100, 0), (0, 0)): заполнение 100 элементов до первой оси, 0 элементов после первой оси, 0 элементов до второй оси, 0 элементов после второй оси:

v = np.random.rand(100, 1)
pad_size = 100
v = np.pad(v, ((pad_size, 0), (0, 0)), 'constant')

Для 1-рядного двумерного массива вам необходимо настроить как вызов rand, так и вызов pad:

v = np.random.rand(1, 100)
pad_size = 100
v = np.pad(v, ((0, 0), (pad_size, 0)), 'constant')
0 голосов
/ 02 июня 2019
  1. np.hstack ((np.zeros ((200, 100)), ваш v))

  2. np.concatenate ((np.zeros ((200, 100)), ваш v), ось = 1)

    может быть ваше желание это:

enter image description here

...