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

如何用numpy.delete()循环删除列表中数组的指定列?

循环删除列表中numpy数组的指定列

核心思路

你的列表R每个元素是**(二维numpy数组, 一维numpy数组)的元组,要删除指定列时,只需遍历每个元组,分别对两个数组执行删除操作,再将处理后的元组收集到新列表即可。注意:numpy数组是0索引**,你说的"第3列"对应索引2,这点要先对应好。

完整代码实现

import numpy as np

# 原始列表R
R = [
    (np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), np.array([100, 101, 102])),
    (np.array([[10, 11, 12], [13, 14, 15], [16, 17, 18]]), np.array([103, 104, 105]))
]

# 要删除的列索引(第3列对应索引2)
target_idx = 2

# 初始化新列表
R1 = []
for arr_tuple in R:
    # 处理二维数组:删除指定列,axis=1表示操作列维度
    new_2d_arr = np.delete(arr_tuple[0], target_idx, axis=1)
    # 处理一维数组:删除指定位置的元素
    new_1d_arr = np.delete(arr_tuple[1], target_idx)
    # 将处理后的数组对加入新列表
    R1.append((new_2d_arr, new_1d_arr))

# 验证结果
for item in R1:
    print("二维数组:")
    print(item[0])
    print("一维数组:")
    print(item[1])

关键细节说明

  1. np.delete的参数含义
    • 第一个参数是要操作的数组;
    • 第二个参数是要删除的索引(支持单个索引或索引列表);
    • 第三个参数axis:仅针对多维数组,axis=1表示删除列,axis=0表示删除行;一维数组无需指定axis。
  2. 效率优化
    你的列表规模较大时,numpy的向量化操作比纯Python循环遍历元素删除高效得多,所以优先用np.delete而非手动操作数组元素。
  3. 索引对应关系
    若你需要根据"第i列"来删除,记得将target_idx设为i-1,比如删除第1列对应target_idx=0,删除第2列对应target_idx=1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:55:37