我有以下代码:

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

它创建了一个width x height x 9的矩阵,其中填充了0.相反,我想知道是否有一个函数或方法可以简单地将它们初始化为NaNs.

推荐答案

在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.

Python相关问答推荐

单击Cookie横幅错误并在Selenium中启用搜索栏

单击cookie按钮,但结果不一致

取相框中一列的第二位数字

如何对行使用分段/部分.diff()或.pct_change()?

Snap 7- read_Area用于类似地址的变量

Matplotlib轮廓线值似乎不对劲

为什么dict(id=1,**{id:2})有时会引发KeyMessage:id而不是TypMessage?

Pandas :多索引组

具有症状的分段函数:如何仅针对某些输入值定义函数?

Deliveryter Notebook -无法在for循环中更新matplotlib情节(保留之前的情节),也无法使用动画子功能对情节进行动画

如何检测背景有噪的图像中的正方形

运行Python脚本时,用作命令行参数的SON文本

如何让Flask 中的请求标签发挥作用

如何在python polars中停止otherate(),当使用when()表达式时?

如何将一个动态分配的C数组转换为Numpy数组,并在C扩展模块中返回给Python

海上重叠直方图

什么是最好的方法来切割一个相框到一个面具的第一个实例?

使用BeautifulSoup抓取所有链接

在不同的帧B中判断帧A中的子字符串,每个帧的大小不同

在Python中从嵌套的for循环中获取插值