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

如何将一维numpy数组按列拆分为多个对应不同字段的独立数组?

解决方法

你当前代码的核心问题是:读入每行数据时没有按逗号拆分字段,生成的numpy数组是一维字符串数组,每个元素对应一整行未拆分的内容,自然无法按列切片提取字段。


方案1:修改现有代码实现

with open('Tesla.csv') as f:
    # 读取表头行,拆分得到字段名
    header = f.readline().rstrip('\n').split(',')
    # 剩余每行按逗号拆分后存入列表
    mylist = [line.rstrip('\n').split(',') for line in f]

import numpy as np
# 转换后得到二维numpy数组,维度为 [数据行数, 字段数]
np_data = np.array(mylist)

# 按列索引提取各字段独立数组
dates = np_data[:, 0]                # 日期列
close_last = np_data[:, 1]           # Close/Last列(原始带$符号的字符串格式)
volume = np_data[:, 2]               # 交易量列
open_price = np_data[:, 3]           # 开盘价列
high = np_data[:, 4]                 # 最高价列
low = np_data[:, 5]                  # 最低价列

# 如果需要把价格、交易量转为数值类型可做如下处理
close_last_num = np.array([float(s.replace('$', '')) for s in close_last])
volume_num = np.array([int(v) for v in volume])

方案2:使用numpy内置方法直接读取CSV(更简洁)

无需手动逐行读文件,调用numpy内置的genfromtxt方法一步完成读取和拆分:

import numpy as np
# delimiter指定分隔符为逗号,skip_header=1跳过表头行,dtype=None自动识别数据类型
np_data = np.genfromtxt('Tesla.csv', delimiter=',', dtype=None, encoding='utf-8', skip_header=1)

# 后续按列提取逻辑和方案1完全一致

补充:可视化场景更推荐用pandas读取

如果你后续要做股价可视化,pandas处理表格数据更方便,直接按字段名取数无需记索引:

import pandas as pd
df = pd.read_csv('Tesla.csv')

# 直接按表头名提取字段,同时可一步完成格式转换
dates = df['Date'].values
close_last_num = df['Close/Last'].str.replace('$', '').astype(float).values
volume_num = df['Volume'].values

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:24:03