我有以下代码:
r = numpy.zeros(shape = (width, height, 9))它创建一个宽度x高x 9矩阵,填充零。 相反,我想知道是否有一个函数或方法来初始化它们而不是NaN。
有没有? 无需手动执行循环等等?
谢谢
I have the following code:
r = numpy.zeros(shape = (width, height, 9))It creates a width x height x 9 matrix filled with zeros. Instead, I'd like to know if there's a function or way to initialize them instead to NaN.
Is there any? Without having to resort to manually doing loops and such?
Thanks
最满意答案
您很少需要循环用于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)发布的a.fill 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的方便实现,您可以在此时为整个片段分配值,代码的意图非常明确。
You rarely need loops for vector operations in numpy. You can create an uninitialized array and assign to all entries at once:
>>> a = numpy.empty((3,3,)) >>> a[:] = numpy.nan >>> a array([[ NaN, NaN, NaN], [ NaN, NaN, NaN], [ NaN, NaN, NaN]])I have timed the alternatives a[:] = numpy.nan here and a.fill(numpy.nan) as posted by 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 loopThe timings show a preference for ndarray.fill(..) as the faster alternative. OTOH, I like numpy's convenience implementation where you can assign values to whole slices at the time, the code's intention is very clear.
更多推荐
发布评论