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

如何使用NumPy数组将指定列分配至新轴以构建目标3D数组?

从2D表格数据构建tslearn所需的3D时间序列数组

核心思路

要从(10,4)的2D数组得到(3,10,5)的目标3D数组(对应(地点数, 时间序列长度, 产品数)),需要完成列映射分组、产品列补全、维度重组三个关键步骤。

具体操作步骤&代码示例

假设你的原2D数组中,第一列是地点标识(包含3个唯一地点),剩余3列是产品数据,需要补全到5个产品列:

import numpy as np
import pandas as pd

# 将Google表格数据转为numpy数组(原形状(10,4))
product_data = product_data.to_numpy()

# 1. 补全产品列到5个(示例补0,实际根据数据来源调整)
# 提取原数据中的产品列,补充2列默认值
product_features = np.hstack([product_data[:, 1:], np.zeros((10, 2))])  # 形状变为(10,5)

# 2. 按地点分组,构建目标3D数组
unique_locations = np.unique(product_data[:, 0])
# 初始化符合目标形状的空数组
target_3d_array = np.zeros((len(unique_locations), 10, 5))

# 遍历每个地点,填充对应时间序列数据
for idx, location in enumerate(unique_locations):
    # 筛选当前地点的所有时间步数据
    location_data = product_features[product_data[:, 0] == location]
    target_3d_array[idx] = location_data

# 验证形状:输出应为(3,10,5)
print(target_3d_array.shape)

关键注意事项

  • 必须明确原数据中哪一列对应地点轴,这是分组的核心依据,确保每个地点恰好有10条时间步数据
  • 产品列从4补到5的逻辑需根据实际业务调整,比如从其他关联数据提取、插值填充,而非简单补0
  • 最终3D数组的维度顺序必须符合tslearn要求:第一个维度是聚类样本数(地点数),第二个是时间序列长度,第三个是特征维度(产品数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:32:44