[英]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.