我有一个2D numpy数组,其形状为(867, 43)
。我的目的是向此数组添加一个额外的列(np.nan值)作为前导列,以使形状变为(867, 44)
。
一个例子是:
# sub-section of array
>>> arr[:2, :5]
array([[-0.30368954, 2.8808107 , 5.8833385 , 8.6606045 , 11.242557 ],
[-0.22719575, 3.0030012 , 6.065371 , 8.924864 , 11.561942 ]],
dtype=float32)
将变成:
# same sub-section
>>> f[:2,:5]
array([[ nan, -0.30368954, 2.8808107 , 5.8833385 , 8.6606045 ],
[ nan, -0.22719575, 3.0030012 , 6.065371 , 8.924864 ]],
dtype=float32)
即,随着水平尺寸增加1,这些值已向右移动。
答案 0 :(得分:1)
看看stack。编辑:澄清;我正在使用broadcasting功能沿第二维插入新轴,然后hstack将沿零轴附加轴(hstack的默认值为行或第一维)。
from numpy import array, hstack, nan, newaxis
a = array([[-0.30368954, 2.8808107 , 5.8833385 , 8.6606045 , 11.242557 ],
[-0.22719575, 3.0030012 , 6.065371 , 8.924864 , 11.561942 ]],
dtype=float32)
tmp = ones((a.shape[0])) * nan # create nan array
print(hstack((tmp[:, newaxis], a))) # append along zero axis
输出:
[[ nan -0.30368954 2.88081074 5.88333845 8.66060448 11.24255657]
[ nan -0.22719575 3.00300121 6.06537104 8.92486382 11.5619421 ]]
答案 1 :(得分:1)
您可以使用np.hstack()
:
import numpy as np
my_arr = np.array([[-0.30368954, 2.8808107 , 5.8833385 , 8.6606045 , 11.242557 ],
[-0.22719575, 3.0030012 , 6.065371 , 8.924864 , 11.561942 ]])
col = np.empty((my_arr.shape[0],1))
col[:] = np.nan
np.hstack((col, my_arr))
返回:
[[ nan -0.30368954 2.8808107 5.8833385 8.6606045 11.242557 ]
[ nan -0.22719575 3.0030012 6.065371 8.924864 11.561942 ]]
答案 2 :(得分:0)
SW 90 00