【问题标题】:randomly dropping columns in two numpy arrays in unison一致地随机删除两个 numpy 数组中的列
【发布时间】:2021-06-03 16:05:58
【问题描述】:

我有两个 numpy 数组。一个 numpy 数组是形状为 (200,x) 的 2D,其中 x 可以是正整数。另一个数组是形状为 (x,) 的一维数组,其中 x 与二维 numpy 数组相同。如果二维数组的第二维大于 1000 以使其大小为 (200,1000) 并且相应的一维数组也将是 (1000,),我想随机删除两个数组中的列。我知道我可以使用 np.delete 但我不知道如何确保随机删除列,以使二维数组的第二维为 1000,而一维数组的长度也是 1000。 我们将不胜感激。

【问题讨论】:

    标签: python-3.x numpy-ndarray


    【解决方案1】:

    您需要做的就是首先决定保留/删除哪些列。然后从两个数组中保留/删除这些列。您有 x 列。您想随机选择其中的任何 1000 个。

    Generate 'n' unique random numbers within a range,您可以在[0, x) 范围内创建列索引列表。

    import random
    
    sel_cols = random.sample(range(x), 1000)
    

    接下来,您可以从 numpy 数组中选择这些列:

    downsized_matrix = original_matrix[:, sel_cols]
    
    downsized_vector = original_vector[sel_cols]
    

    【讨论】:

    • 感谢它的工作。如果我想从矩阵中删除行,它将是 original_matrix[sel_cols:] 吗?
    • @John original_matrix[sel_cols, :]。注意sel_cols: 之间的逗号。
    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    相关资源
    最近更新 更多