gpt4 book ai didi

python - 如何在python数组中制作连续的随机NaN

转载 作者:行者123 更新时间:2023-12-04 10:37:58 25 4
gpt4 key购买 nike

假设有一个随机数的数组

[[ 1. 3. 4. 5. 1. 2. 5. 7.]
[ 1. 3. 6. 4. 4. 0. 4. 0.]
[ 5. 0. 5. 1. 3. 0. 5. 1.]
[ 2. 1. 5. 4. 6. 1. 3. 4.]
[ 2. 1. 0. 0. 6. 1. 2. 1.]
[ 3. 5. 7. 2. 9. 6. 3. 5.]]

我要介绍 4连续NaN 在这个数组中,如下所示。
另外, NaN必占约 20% 总阵列,这意味着 20% 的缺失率。这个数组有 48 个分量,所以 NaN 有 10 个分量是必要的。
连续块 NaN s 应该被引入到这个数组中。

如果可能,我想调整连续性比率和丢失率。 (连续比是指连续NaN的个数...)
[[ 1. 3. NaN NaN NaN NaN 5. 7.]
[ 1. 3. 6. 4. 4. 0. 4. 0.]
[ 5. 0. 5. 1. 3. 0. 5. 1.]
[ NaN NaN NaN NaN 6. 1. 3. 4.]
[ 2. 1. 0. 0. 6. 1. 2. 1.]
[ 3. 5. 7. 2. 9. 6. NaN NaN]]

有很多代码在数组中生成随机 NaN,但我不知道如何用连续的 NaN 替换值。
首先感谢您的帮助!

最佳答案

我可以建议这种方法,这远非最佳,但它有效:

## data
import numpy as np
np.random.seed(42)

a = np.array([[1., 3., 4., 5., 1., 2., 5., 7.],
[1., 3., 6., 4., 4., 0., 4., 0.],
[5., 0., 5., 1., 3., 0., 5., 1.],
[2., 1., 5., 4., 6., 1., 3., 4.],
[2., 1., 0., 0., 6., 1., 2., 1.],
[3., 5., 7., 2., 9., 6., 3., 5.]])

## NaN statistics definition
nan_ratio = 0.2
nan_seq_len = 4
number_of_nan_seq = int(nan_ratio * a.size / nan_seq_len)
nan_position = np.random.randint(0, a.size-nan_seq_len, size=number_of_nan_seq)

## NaN insertion
nan_indexes = np.ones([nan_position.size, nan_seq_len]) * nan_position[:, np.newaxis] + np.arange(0, nan_seq_len)
a_shape = a.shape
a_flat = a.flatten()
a_flat[nan_indexes.astype('int')] = np.nan
a = a_flat.reshape(a_shape)

输出 a :
array([[ 1.,  3.,  4.,  5.,  1.,  2.,  5.,  7.],
[ 1., 3., 6., 4., 4., 0., 4., 0.],
[ 5., 0., 5., 1., 3., 0., 5., 1.],
[ 2., 1., 5., 4., nan, nan, nan, nan],
[ 2., 1., 0., 0., 6., 1., nan, nan],
[nan, nan, 7., 2., 9., 6., 3., 5.]])

关于python - 如何在python数组中制作连续的随机NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60070996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com