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

使用Yfinance获取数据做线性回归时,合并Numpy数组遇格式警告

问题解决:合并不同长度Numpy数组触发VisibleDeprecationWarning

问题原因

你遇到的警告是因为要合并的10个Numpy数组长度不一致(每只股票的收盘价数据行数不同),Numpy无法创建规整的多维数组,因此触发了弃用警告。

解决方案

方案1:对齐时间索引,统一数据长度(推荐用于线性回归场景)

线性回归需要规整的时间序列数据,优先通过对齐时间索引来统一所有股票的数据长度:

import yfinance as yf
import pandas as pd

# 替换为你的10只股票代码
tickers = ["AAPL", "MSFT", "GOOG", "AMZN", "TSLA", "META", "NVDA", "NFLX", "BABA", "JPM"]

# 批量获取每只股票的收盘价(带时间索引)
price_dfs = []
for ticker in tickers:
    # 按需调整时间范围
    df = yf.download(ticker, start="2020-01-01", end="2024-06-01")["Close"].to_frame(name=ticker)
    price_dfs.append(df)

# 按时间索引合并,只保留所有股票都存在的交易日数据
merged_df = pd.concat(price_dfs, axis=1, join="inner")

# 转换为规整的Numpy数组(所有列长度一致)
normalized_array = normalize_data(merged_df.values)

方案2:创建Object类型数组(保留不同长度数据)

如果确实需要保留各股票的原始数据长度,按警告提示指定dtype=object即可:

import numpy as np

# 假设arr_list是你获取到的10个长度不一的Numpy数组列表
arr_list = [closing_price(ticker) for ticker in tickers[:10]]

# 指定dtype=object创建数组
merged_array = np.array(arr_list, dtype=object)

⚠️ 注意:Object类型数组无法直接进行整体数值运算,适合单独遍历每个子数组处理。

调试建议

  • 先检查数组长度差异:执行print([len(arr) for arr in arr_list]),确认是否存在长度不一致的情况。
  • 若长度差异由时间范围不同导致,优先使用方案1对齐时间,这是时间序列预测的基础要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:45:30