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

如何迭代拼接2D NumPy数组生成(100,75,4)形状的3D数组?

解决方法

问题根源

你之前的np.stack代码报错,是因为第一次循环得到的temp_array是**(75,4)的2维数组,第二次循环stack后变成(2,75,4)**的3维数组;第三次循环时,新取的切片是(75,4)的2维数组,和3维的temp_array维度不匹配,自然会报错。而np.append默认会扁平化数组,所以最终得到(7500,4)的2维结果。

两种可行方案

方案1:预先初始化数组(高效直接)

既然知道最终数组形状是(100,75,4),可以直接创建空数组,循环填充对应位置:

import numpy as np

# 定义要提取的列
target_cols = ['Open', 'High', 'Low', 'Close']
# 预初始化指定形状的空数组
result_array = np.empty((100, 75, 4))

for i in range(100):
    # 提取第i到i+74行(共75行)的目标列数据,转成numpy数组
    slice_data = timeseries[target_cols].iloc[i:i+75].to_numpy()
    # 将切片数据赋值到结果数组的第i个位置
    result_array[i] = slice_data

print(result_array.shape)  # 输出 (100, 75, 4)

方案2:用列表收集后一次性合并(更灵活)

先把每次的切片数据存入列表,最后用np.array或np.stack合并成3维数组,这种方式在循环中效率更高:

target_cols = ['Open', 'High', 'Low', 'Close']
data_slices = []

for i in range(100):
    slice_data = timeseries[target_cols].iloc[i:i+75].to_numpy()
    data_slices.append(slice_data)

# 列表转numpy数组,自动生成(100,75,4)的3维结构
result_array = np.array(data_slices)
# 或者用np.stack(data_slices, axis=0),效果完全一致
print(result_array.shape)  # 输出 (100, 75, 4)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:25:03