Ответ 1
Это проще:
k.reshape(k.shape + (1,))
Но если вы хотите добавить пустое измерение в конец, вы должны использовать numpy.newaxis
:
import numpy as np
k = k[..., np.newaxis]
или
k = k[..., None]
(См. документацию для разрезания).
Если k является массивом numpy произвольной формы, поэтому k.shape = (s1, s2, s3, ..., sn)
, и я хочу изменить его так, чтобы k.shape
стал (s1, s2, ..., sn, 1)
, это лучший способ сделать это в одной строке?
k.reshape(*(list(k.shape) + [1])
Это проще:
k.reshape(k.shape + (1,))
Но если вы хотите добавить пустое измерение в конец, вы должны использовать numpy.newaxis
:
import numpy as np
k = k[..., np.newaxis]
или
k = k[..., None]
(См. документацию для разрезания).
Из 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)
работает и в более старых версиях.