在2D numpy数组python中添加额外的in列

时间:2018-12-13 20:07:05

标签: python arrays python-2.7 numpy numpy-ndarray

我有一个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,这些值已向右移动。

3 个答案:

答案 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)

使用np.insert()

SW 90 00