Много способов сделать это, но (почти) все сводятся к созданию нового массива желаемой формы и значений заполнения:
In [50]: arr = np.array([1,2,3,4,5,6])
In [51]: res = np.full((2,4), np.nan)
In [52]: res
Out[52]:
array([[nan, nan, nan, nan],
[nan, nan, nan, nan]])
In [53]: res.flat[:len(arr)]=arr
In [54]: res
Out[54]:
array([[ 1., 2., 3., 4.],
[ 5., 6., nan, nan]])
Я использовал flat
для обработки res
как 1d массив для копирования.
Исключение составляет метод resize
, но он заполняется нулями. И не меняет dtype
, чтобы разрешить float nan
:
In [55]: arr.resize(2,4)
In [56]: arr
Out[56]:
array([[1, 2, 3, 4],
[5, 6, 0, 0]])