繁体   English   中英

从 numpy 数组 python 创建一个三维矩阵

[英]create a three dimension matrix from a numpy array python

标题本质上,我有这个数组

       i   j  d  Uijd
0      1   1  0     1
1      1   1  1     1
2      1   1  2     2
3      1   1  3     1
4      1   1  4     1
...   ..  .. ..   ...
1570  15  15  2     1
1571  15  15  3     1
1572  15  15  4     1
1573  15  15  5     0
1574  15  15  6     2

i 和 j 分别是起源和命运,d 是那一天,我想制作一个三维矩阵并将其称为 U[i,j,d],但我不知道如何。 我尝试使用 pandas 但我不知道如何使用它

我对 python 很陌生,所以我一无所知

提前致谢

假设 DataFrame 作为输入、排序和非缺失索引,您应该能够使用进行reshape

U = df['Uijd'].to_numpy().reshape(15, 15, 7)

对于更通用的方法,您可以使用nunique从 DataFrame 中提取形状:

U = df['Uijd'].to_numpy().reshape(df[['i', 'j', 'd']].nunique())

选择

如果您真的希望能够运行U[i, j, d]或处理缺失的组合,另一种方法是设置一个空数组并分配值:

U = np.zeros(df[['i', 'j', 'd']].max()+1, dtype=df['Uijd'].dtype)

U[tuple(zip(*df[['i', 'j', 'd']].values))] = df['Uijd']

U.shape
# (16, 16, 7)

U[15, 15, 6]
# 2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM