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

如何用Python将给定数组转换为三维Numpy矩阵U[i,j,d]

将DataFrame转换为可通过U[i,j,d]访问的三维矩阵

针对你的需求,这里提供两种适合Python新手的实现方法:

方法1:使用Numpy创建三维数组

这种方式最直接,能实现U[i,j,d]的直接索引调用:

  1. 先把数据读入Pandas DataFrame(如果还没读入):
import pandas as pd

# 替换为你的数据文件路径,或直接使用已有的DataFrame
df = pd.read_csv('your_data_file.csv')
  1. 确定三维数组的尺寸:
import numpy as np

max_i = df['i'].max()
max_j = df['j'].max()
max_d = df['d'].max()

# 创建初始三维数组,用0填充(可根据需求修改初始值)
U = np.zeros((max_i + 1, max_j + 1, max_d + 1), dtype=int)
  1. 填充数据到数组中:
# 高效遍历数据填充
for i, j, d, u in df.to_numpy():
    U[int(i), int(j), int(d)] = u

完成后即可直接调用,比如U[1,1,0]会返回1,U[15,15,6]返回2。

方法2:使用Pandas MultiIndex保留标签访问

如果想保留原数据的标签关联,可通过MultiIndex实现类似访问:

  1. 设置i、j、d为多层索引:
df.set_index(['i', 'j', 'd'], inplace=True)
  1. 通过loc访问对应值:
df.loc[(1, 1, 0)]  # 获取i=1,j=1,d=0对应的Uijd值
df.loc[(15,15,6)]  # 获取i=15,j=15,d=6对应的Uijd值

注意事项

  • 如果存在缺失的i/j/d组合,Numpy数组中对应位置会保持初始值(比如0),若需要标记缺失可将数组 dtype 改为float,初始值设为np.nan。
  • 数据量较大时,使用df.to_numpy()遍历比iterrows()效率更高。

内容的提问来源于stack exchange,提问作者Maximiliano Martínez Sáez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:15:12