我有以下代码:
r = numpy.zeros(shape = (width, height, 9))
它创建一个用零填充的width x height x 9
矩阵。相反,我想知道是否有一个函数或方法可以以一种简单的方式将它们初始化为NaN
。
发布于 2014-10-10 07:50:14
发布于 2017-07-10 16:01:17
我比较了建议的替代方案的速度,发现对于足够大的向量/矩阵填充,除了val * ones
和array(n * [val])
之外的所有替代方案都是同样快的。
重现该图的代码:
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")
发布于 2009-11-10 08:16:59
你熟悉numpy.nan
吗?
您可以创建自己的方法,例如:
def nans(shape, dtype=float):
a = numpy.empty(shape, dtype)
a.fill(numpy.nan)
return a
然后
nans([3,4])
将输出
array([[ NaN, NaN, NaN, NaN],
[ NaN, NaN, NaN, NaN],
[ NaN, NaN, NaN, NaN]])
我在mailing list thread中找到了这段代码。
https://stackoverflow.com/questions/1704823
复制相似问题