You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现两个numpy数组同步随机删除列以保证维度匹配

解决思路

保证两个数组删除后维度匹配的核心逻辑是统一生成一次随机索引,两个数组共用这组索引做筛选/删除操作,具体步骤如下:

  • 先校验二维数组的第二维度长度是否大于1000,仅大于时执行删减操作
  • 随机生成固定的索引列表:可以是需要保留的1000个列的索引,也可以是需要删除的x-1000个列的索引
  • 用同一组索引分别处理二维数组和一维数组,即可保证维度一一对应
实现示例

方式1:直接筛选保留列(更推荐,运行效率更高)

import numpy as np

# 此处arr_2d为你的shape为(200, x)的二维数组,arr_1d为你的shape为(x,)的一维数组
x = arr_2d.shape[1]
if x > 1000:
    # 无放回随机抽取1000个不重复的列索引作为保留项
    keep_index = np.random.choice(x, size=1000, replace=False)
    # 共用索引筛选两个数组
    arr_2d_res = arr_2d[:, keep_index]
    arr_1d_res = arr_1d[keep_index]

方式2:使用np.delete实现(符合你提到的操作习惯)

import numpy as np

x = arr_2d.shape[1]
if x > 1000:
    # 无放回随机抽取x-1000个不重复的列索引作为删除项
    delete_index = np.random.choice(x, size=x-1000, replace=False)
    # 共用索引删除两个数组的对应位置元素
    arr_2d_res = np.delete(arr_2d, delete_index, axis=1)
    arr_1d_res = np.delete(arr_1d, delete_index, axis=0)
注意事项
  • 必须设置replace=False保证生成的索引无重复,避免出现列重复选择/重复删除的问题
  • 两种实现的最终效果完全一致,直接索引筛选的方式不需要对原数组做拷贝修改,性能更优

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 20:45:10