Форма массива python

предположим, я создаю 2-мерный массив

 m = np.random.normal(0, 1, size=(1000, 2))
 q = np.zeros(shape=(1000,1))
 print m[:,0] -q

когда я m[:,0].shape Я (1000,) в противоположность (1000,1) чего я хочу. Как заставить m[:,0] до (1000,1) массив?

1 ответов


выбрав 0-й столбец, в частности, как вы заметили, вы уменьшаете размерность:

>>> m = np.random.normal(0, 1, size=(5, 2))
>>> m[:,0].shape
(5,)

у вас есть много вариантов, чтобы получить объект 5x1 обратно. Вы можете индексировать, используя список, а не целое число:

>>> m[:, [0]].shape
(5, 1)

вы можете попросить "все столбцы до, но не включая 1":

>>> m[:,:1].shape
(5, 1)

или вы можете использовать None (или np.newaxis), что является общим трюком для расширения размеров:

>>> m[:,0,None].shape
(5, 1)
>>> m[:,0][:,None].shape
(5, 1)
>>> m[:,0, None, None].shape
(5, 1, 1)

наконец, вы можете reshape:

>>> m[:,0].reshape(5,1).shape
(5, 1)

но я бы использовал один из других методов для такого случая.