【问题标题】:place random numbers for nan values numpy array为 nan 值 numpy 数组放置随机数
【发布时间】:2014-02-19 07:41:01
【问题描述】:

我有一个 numpy 数组 X,其中包含 nan 值。

X = np.array([[  1.,   2.,   3.],
              [  4.,  nan,  54.],
              [ 90.,  32.,  nan],
              [ 55.,  42.,  86.]])

我想用 不同 随机数替换所有 nan 值。我可以使用np.random.randn() 轻松生成随机数。我可以使用掩码来定位和计算 nans。

mx = ma.masked_array(X,mask=np.isnan(X)) //locate nans
mx.mask.sum()      // count nans so I know how many random values to generate

我的问题是我不知道如何快速有效地输入它们。我上面给出的示例是一个非常小的数据集,但我有一个要大得多。因此效率是关键。

如果我尝试

X[mx.mask] = np.random.randn() //or 
X[mx.mask]=np.random.randn(mx.mask.sum())

我将每个 nan 替换为 same 随机数,这不是我想要的,否则在第二个示例中会出现广播错误。

有什么建议吗?

【问题讨论】:

标签: python arrays random numpy


【解决方案1】:
X[np.isnan(X)] = np.random.randn(len(X[np.isnan(X)]))

以上内容对我来说非常适合。 Numpy 1.8.0 版。

【讨论】:

  • 哇,我是个菜鸟,我一定是在某个地方打错字了。 10 分钟后将勾选此项,谢谢!
猜你喜欢
  • 2015-11-17
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-08
  • 2015-09-29
  • 1970-01-01
相关资源
最近更新 更多