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

piR*_*red 5 python numpy

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

array([[1, 2],
       [3, 4]])
Run Code Online (Sandbox Code Playgroud)

然后使用 resize

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

array([[1, 2, 3],
       [4, 1, 2],
       [3, 4, 1]])
Run Code Online (Sandbox Code Playgroud)

b现在a以不稳定的顺序拥有来自if 的所有信息。有没有办法利用它来创建左上角看起来像 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]])
Run Code Online (Sandbox Code Playgroud)

显然,上面的代码完成了同样的事情。我不禁认为resize可以以某种方式使用它来更有效地完成此任务。

wim*_*wim 7

也许看看pad

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

请注意,这nan实际上是一个浮点数,因此如果尝试使用整数 dtypes 执行此操作,请务必小心。您可能更喜欢使用掩码数组。

  • 事实上,我不得不使用`np.pad(a.astype(float)...` (3认同)