[英]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 很陌生,所以我一无所知
提前致谢
假设pandas DataFrame 作为输入、排序和非缺失索引,您应该能够使用numpy进行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.