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

如何从numpy数组列表中提取每个数组的前10列

解决numpy数组列表取每个数组前10列的问题

嘿,我完全懂你踩的这个坑!Python里列表索引和numpy数组索引的组合确实容易让人混淆,你用list[:][:10]的时候,其实是先把整个列表完整取出来(list[:]等于复制整个列表),然后再取这个新列表的前10个元素——也就是前10个数组,根本不是每个数组的前10列,这就难怪结果不对啦!

正确的做法:列表推导式 + numpy数组索引

要拿到每个数组的前10列,你需要遍历列表里的每一个numpy数组,对每个数组单独做列索引操作。最简洁的方式就是用列表推导式:

import numpy as np

# 假设你的numpy数组列表名叫arr_list
# 遍历每个数组,取所有行的前10列
first_10_cols_list = [arr[:, :10] for arr in arr_list]

这里的arr[:, :10]是numpy的标准索引语法:

  • 第一个:表示取数组的所有行
  • 第二个:10表示取数组的前10列

进阶:缩放前10列并保留哑变量

如果你还要把前10列传入缩放器转换,同时保留后面的哑变量列,可以这样做(以StandardScaler为例):

from sklearn.preprocessing import StandardScaler

# 1. 先收集所有数组的前10列,用来拟合缩放器(确保缩放的一致性)
all_first_10 = np.vstack([arr[:, :10] for arr in arr_list])
scaler = StandardScaler()
scaler.fit(all_first_10)

# 2. 遍历每个数组,分别处理
processed_arrays = []
for arr in arr_list:
    # 转换前10列
    scaled_part = scaler.transform(arr[:, :10])
    # 取出剩余的哑变量列(从第10列到末尾)
    dummy_part = arr[:, 10:]
    # 合并转换后的部分和哑变量部分
    combined_arr = np.hstack([scaled_part, dummy_part])
    processed_arrays.append(combined_arr)

这样处理后,你得到的processed_arrays列表里,每个数组的前10列是缩放后的结果,后面的列保持原来的哑变量不变,完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:22:32