假設我有一些簡單陣列形式的時間序列資料。
X1 = np.array[(1, 2, 3, 4]
Hankel 矩陣可以通過使用 scipy.linalg.hankel 獲得,它看起來像這樣:
hankel(X1)
array([[1, 2, 3, 4],
[2, 3, 4, 0],
[3, 4, 0, 0],
[4, 0, 0, 0]])
現在假設我有一個更大的陣列,形式為
X2 = np.array([1, 2, 3, 4, 5, 6, 7])
我想要做的是用索引中下一個數字(特定于每一行)填充此矩陣中的零。通過使用陣列 X2 中的前四個值取相同的 Hankel 矩陣,我希望看到以下輸出:
hankel(X2[:4])
array([[1, 2, 3, 4],
[2, 3, 4, 5],
[3, 4, 5, 6],
[4, 5, 6, 7]])
我該怎么做?理想情況下,我希望將其用于更大的資料。感謝給出的任何提示或指示。謝謝!
uj5u.com熱心網友回復:
如果您的資料集中有一個具有適當索引值的矩陣,則可以直接在資料集中使用整數陣列索引。
要創建索引矩陣,您可以簡單地使用雙倍大小的 Hankel 陣列的左上象限。可能有更簡單的方法來創建索引矩陣,但這可以解決問題。
>>> X = np.array([9, 8, 7, 6, 5, 4, 3])
>>> N = 4 # the size of the "window"
>>> indices = scipy.linalg.hankel(np.arange(N*2))[:N, :N]
>>> indices
array([[0, 1, 2, 3],
[1, 2, 3, 4],
[2, 3, 4, 5],
[3, 4, 5, 6]])
>>> X[indices]
array([[9, 8, 7, 6],
[8, 7, 6, 5],
[7, 6, 5, 4],
[6, 5, 4, 3]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/520224.html
