我有以下代码:
r = numpy.zeros(shape = (width, height, 9))
它创建了一个width x height x 9
的矩阵,其中填充了0.相反,我想知道是否有一个函数或方法可以简单地将它们初始化为NaN
s.
我有以下代码:
r = numpy.zeros(shape = (width, height, 9))
它创建了一个width x height x 9
的矩阵,其中填充了0.相反,我想知道是否有一个函数或方法可以简单地将它们初始化为NaN
s.
在Numpy中,向量操作很少需要循环. 您可以创建一个未初始化的数组并一次分配给所有条目:
>>> a = numpy.empty((3,3,))
>>> a[:] = numpy.nan
>>> a
array([[ NaN, NaN, NaN],
[ NaN, NaN, NaN],
[ NaN, NaN, NaN]])
我已经在这里对备选方案a[:] = numpy.nan
和Blaenk发布的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
计时显示更倾向于 Select ndarray.fill(..)
作为更快的替代方案.OTOH,我喜欢Numpy的方便实现,可以同时为整个切片赋值,代码的意图非常明确.
请注意,ndarray.fill
在适当的位置执行其操作,因此numpy.empty((3,3,)).fill(numpy.nan)
将返回None
.