нарезка двумерного массива - PullRequest
0 голосов
/ 31 мая 2018

У меня есть массив NumPy padded_train_x формы (2500,500).

Проблема в том, что когда я пытаюсь получить форму элемента этого массива, например padded_train_x[0].shape, он выводит (500,), но когда я запускаю его как padded_train_x[0:1], он выводит (1,500).Почему это происходит?

Я пытаюсь сделать прогноз в модели LSTM, используя керасы, но мне нужно использовать padded_train_x[0:1] в качестве ввода вместо простого padded_train_x[0]

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Что касается того, почему это происходит, давайте подождем кого-то более опытного, не уверенного, что на самом деле есть причина.

NumPy сохраняет размеры при разрезании и отбрасывает их при индексации.Это на самом деле вещь Python, то же самое происходит со списками.

Вы можете отбросить одномерные оси с помощью np.squeeze

a = np.ones((2500, 500))

a[0].shape
(500,)

a[0:1].shape
(1, 500)

a[0:1].squeeze().shape
(500,)
0 голосов
/ 31 мая 2018

Это потому, что при создании среза padded_train_x[0:1] вы получаете 2d массив:

a = np.linspace(1024).reshape(64,-1)
b = a[0]
c = a[0:1]

b
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])
b[0]
0

c
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15]])
c[0]
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...