Подтвердить что ты не робот

Это лучший способ добавить дополнительное измерение в массив numpy в одной строке кода?

Если k является массивом numpy произвольной формы, поэтому k.shape = (s1, s2, s3, ..., sn), и я хочу изменить его так, чтобы k.shape стал (s1, s2, ..., sn, 1), это лучший способ сделать это в одной строке?

k.reshape(*(list(k.shape) + [1])
4b9b3361

Ответ 1

Это проще:

k.reshape(k.shape + (1,))

Но если вы хотите добавить пустое измерение в конец, вы должны использовать numpy.newaxis:

import numpy as np
k = k[..., np.newaxis]

или

k = k[..., None]

(См. документацию для разрезания).

Ответ 2

Из python3.5 вы можете использовать распаковку с np.ndarray.shape внутри np.reshape:

>>> my_array = np.array([1,2,3,4])
>>> my_array.reshape(1, *my_array.shape)
array([[1, 2, 3, 4]])
>>> my_array.reshape(*my_array.shape, 1)
array([[1],
       [2],
       [3],
       [4]]) 

my_array.reshape(1, *my_array.shape) работает и в более старых версиях.