小编典典

创建用 NaN 填充的 numpy 矩阵

all

我有以下代码:

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

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


阅读 80

收藏
2022-05-25

共1个答案

小编典典

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)并由布兰克发布:

$ 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)将改为 return
None

2022-05-25