使用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)
谢谢这两种方法似乎都解决了我所追求的,我想这是一种更明确的方法来做我想做的事情。