创建用 NaN 填充的 numpy 矩阵

新手上路,请多包涵

我有以下代码:

 r = numpy.zeros(shape = (width, height, 9))

它创建一个填充零的 width x height x 9 矩阵。相反,我想知道是否有一个函数或方法可以简单地将它们初始化为 NaN s。

原文由 devoured elysium 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 929
2 个回答

numpy 中的向量运算很少需要循环。您可以创建一个未初始化的数组并立即分配给所有条目:

 >>> a = numpy.empty((3,3,))
>>> a[:] = numpy.nan
>>> a
array([[ NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN]])


我已经计时了替代方案 a[:] = numpy.nan 这里和 a.fill(numpy.nan) 由Blaenk发布:

 $ python -mtimeit "import numpy as np; a = np.empty((100,100));" "a.fill(np.nan)"
10000 loops, best of 3: 54.3 usec per loop
$ python -mtimeit "import numpy as np; a = np.empty((100,100));" "a[:] = np.nan"
10000 loops, best of 3: 88.8 usec per loop

时间显示偏好 ndarray.fill(..) 作为更快的选择。 OTOH,我喜欢 numpy 的便捷实现,您可以在其中为整个切片分配值,代码的意图非常明确。

请注意 ndarray.fill 执行其操作,因此 numpy.empty((3,3,)).fill(numpy.nan) 将改为返回 None

原文由 u0b34a0f6ae 发布,翻译遵循 CC BY-SA 4.0 许可协议

另一种选择是使用 numpy.full ,这是 NumPy 1.8+ 中可用的选项

a = np.full([height, width, 9], np.nan)

这非常灵活,您可以用您想要的任何其他数字填充它。

原文由 Pietro Biroli 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题