首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >创建填充了NaNs的numpy矩阵

创建填充了NaNs的numpy矩阵
EN

Stack Overflow用户
提问于 2009-11-10 08:10:07
回答 8查看 277.1K关注 0票数 233

我有以下代码:

代码语言:javascript
复制
r = numpy.zeros(shape = (width, height, 9))

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

EN

回答 8

Stack Overflow用户

发布于 2014-10-10 07:50:14

另一种选择是使用NumPy 1.8+中提供的numpy.full选项

代码语言:javascript
复制
a = np.full([height, width, 9], np.nan)

这是非常灵活的,您可以填充任何其他您想要的数字。

票数 217
EN

Stack Overflow用户

发布于 2017-07-10 16:01:17

我比较了建议的替代方案的速度,发现对于足够大的向量/矩阵填充,除了val * onesarray(n * [val])之外的所有替代方案都是同样快的。

重现该图的代码:

代码语言:javascript
复制
import numpy
import perfplot

val = 42.0


def fill(n):
    a = numpy.empty(n)
    a.fill(val)
    return a


def colon(n):
    a = numpy.empty(n)
    a[:] = val
    return a


def full(n):
    return numpy.full(n, val)


def ones_times(n):
    return val * numpy.ones(n)


def list(n):
    return numpy.array(n * [val])


b = perfplot.bench(
    setup=lambda n: n,
    kernels=[fill, colon, full, ones_times, list],
    n_range=[2 ** k for k in range(20)],
    xlabel="len(a)",
)
b.save("out.png")
票数 69
EN

Stack Overflow用户

发布于 2009-11-10 08:16:59

你熟悉numpy.nan吗?

您可以创建自己的方法,例如:

代码语言:javascript
复制
def nans(shape, dtype=float):
    a = numpy.empty(shape, dtype)
    a.fill(numpy.nan)
    return a

然后

代码语言:javascript
复制
nans([3,4])

将输出

代码语言:javascript
复制
array([[ NaN,  NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN,  NaN]])

我在mailing list thread中找到了这段代码。

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1704823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档