创建用NaN填充的Numpy矩阵

我有以下代码:

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

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

回答:

您很少需要在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的便捷实现,在该实现中您可以同时为整个slice分配值,代码的意图非常明确。

请注意,ndarray.fill它是就地执行其操作,因此numpy.empty((3,3,)).fill(numpy.nan)将改为return

None

以上是 创建用NaN填充的Numpy矩阵 的全部内容, 来源链接: utcz.com/qa/401889.html

回到顶部