
您很少需要在numpy中进行矢量 *** 作循环。您可以创建一个未初始化的数组并立即分配给所有条目:
>>> a = numpy.empty((3,3,))>>> a[:] = numpy.nan>>> aarray([[ 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。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)