【问题标题】:numpy: Randomly split array into 3 not equal partsnumpy:将数组随机拆分为 3 个不相等的部分
【发布时间】:2021-02-09 11:18:58
【问题描述】:

无论如何,我可以将一个数组分成 3 个不相等的部分,例如,没有重复项

array1 = 数组元素的 70%

array2 = 数组元素的 10%

array3 = 数组元素的 20%

但没有两次取同一个元素?

谢谢!

【问题讨论】:

    标签: python-3.x numpy random


    【解决方案1】:

    如果您可以接受丢失数组的原始顺序,您可以简单地随机打乱数组,然后根据需要拆分数组。

    a = np.arange(100) # Example array.
    
    split1 = int(0.7 * len(a))
    split2 = int(0.8 * len(a))
    
    np.random.shuffle(a)
    p1 = a[:split1]
    p2 = a[split1:split2]
    p3 = a[split2:]
    

    如果必须保留数组的顺序(我们称之为b),可以使用a = np.arange(len(b))进行上述操作,然后:

    np.sort(p1)
    np.sort(p2)
    np.sort(p3)
    bp1 = b[p1]
    bp2 = b[p2]
    bp3 = b[p3]
    

    【讨论】:

    • 这很聪明!我实际上确实关心数组的顺序,所以我只会在之前制作一个副本。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多