Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用NAN初始化python数组(预分配)_Python_Numpy_Pre Allocation - Fatal编程技术网

使用NAN初始化python数组(预分配)

使用NAN初始化python数组(预分配),python,numpy,pre-allocation,Python,Numpy,Pre Allocation,我想初始化一个数组,它将保存一些数据。我创建了一个随机矩阵(使用np.empty),然后将其乘以np.nan。这有什么问题吗?还是有更好的做法值得我坚持 为了进一步解释我的情况:我有需要存储在数组中的数据。假设我有8行数据。每行中的元素数量不相等,因此我的矩阵行长度需要与最长的行一样长。在其他行中,某些元素将不会被填充。我不想使用零,因为我的一些数据实际上可能是零 我意识到我可以使用一些我知道我的数据永远不会使用的值,但nans肯定更清楚。只是想知道这是否会在以后的处理中引起任何问题。我意识到我

我想初始化一个数组,它将保存一些数据。我创建了一个随机矩阵(使用
np.empty
),然后将其乘以
np.nan
。这有什么问题吗?还是有更好的做法值得我坚持

为了进一步解释我的情况:我有需要存储在数组中的数据。假设我有8行数据。每行中的元素数量不相等,因此我的矩阵行长度需要与最长的行一样长。在其他行中,某些元素将不会被填充。我不想使用零,因为我的一些数据实际上可能是零

我意识到我可以使用一些我知道我的数据永远不会使用的值,但nans肯定更清楚。只是想知道这是否会在以后的处理中引起任何问题。我意识到我需要使用
nanmax
而不是
max
等等

我创建了一个随机矩阵(使用np.empty),然后将其乘以np.nan。这有什么问题吗?还是有更好的做法值得我坚持

例如,您可以使用:

np.full((100, 100), np.nan)


但是,根据您的需要,您可以查看屏蔽阵列或稀疏矩阵。不过,它可能合适,也可能不合适。无论采用哪种方式,您都可能需要使用相应模块的不同函数,而不是普通的numpy ufuncs。

我喜欢的一种方式可能不是最好的,但很容易记住,就是通过以下方式向numpy对象添加“nans”方法:

import numpy as np
def nans(n):
    return np.array([np.nan for i in range(n)])

setattr(np,'nans',nans)
现在您可以简单地使用np.nans,就好像它是np.zero一样:

np.nans(10)

谢谢这两种方法似乎都解决了我所追求的,我想这是一种更明确的方法来做我想做的事情。