我可以使用np.resize来填充np.nan数组

时间:2016-12-20 23:49:11

标签: python numpy

a = np.array([[1, 2], [3, 4]])
a

array([[1, 2],
       [3, 4]])

然后使用resize

b = np.resize(a, (3, 3))
b

array([[1, 2, 3],
       [4, 1, 2],
       [3, 4, 1]])

b现在拥有来自a的所有信息,如果处于不稳定的顺序中。有没有办法利用它来创建左上角的内容,但现在有一个新列和一个新行的np.nan?

c = np.empty(b.shape)
c.fill(np.nan)
c[:a.shape[0], :a.shape[1]] = a
c

array([[  1.,   2.,  nan],
       [  3.,   4.,  nan],
       [ nan,  nan,  nan]])

显然上面的代码完成了同样的事情。我不禁想到resize可以某种方式用来更有效地实现这一目标。

1 个答案:

答案 0 :(得分:2)

也许看看pad

>>> np.pad(a, ((0,1),(0,1)), 'constant', constant_values=np.nan)
array([[  1.,   2.,  nan],
       [  3.,   4.,  nan],
       [ nan,  nan,  nan]])

请注意,nan实际上是一个浮点数,因此如果尝试使用整数dtypes,请注意。您可能更喜欢使用蒙版数组。