我有一個numpy的陣列,它看起來像這樣:斯普利特的關鍵陣列的numpy的陣列
+----+-------+----------------+
| id | class | probability |
+----+-------+----------------+
| 0 | 0 | 0.371301944865 |
| 0 | 1 | 0.317619162391 |
| 0 | -1 | 0.311078922721 |
| 1 | 0 | 0.401434454687 |
| 1 | 1 | 0.316000976419 |
| 1 | -1 | 0.282564557522 |
| 2 | 1 | 0.361490456577 |
| 2 | 0 | 0.324832048066 |
| 2 | -1 | 0.313677512904 |
| . | . | . |
| . | . | . |
| . | . | . |
+----+-------+----------------+
或更正式的:
x = numpy.array([[ 0.00000000e+00, 0.00000000e+00, 3.71301945e-01],
[ 0.00000000e+00, 1.00000000e+00, 3.17619162e-01],
[ 0.00000000e+00, -1.00000000e+00, 3.11078923e-01],
[ 1.00000000e+00, 0.00000000e+00, 4.01434455e-01],
[ 1.00000000e+00, 1.00000000e+00, 3.16000976e-01],
[ 1.00000000e+00, -1.00000000e+00, 2.82564558e-01],
[ 2.00000000e+00, 1.00000000e+00, 3.61490457e-01],
[ 2.00000000e+00, 0.00000000e+00, 3.24832048e-01],
[ 2.00000000e+00, -1.00000000e+00, 3.13677513e-01]])
正如你可以看到,每一個ID,我有三個類別,每個類別都有其概率。我想將其轉換爲這樣的四列陣列:
id/class -1 0 1
0 0.311078922721 0.371301944865 0.317619162391
1 0.282564557522 0.401434454687 0.316000976419
. . . .
. . . .
. . . .
是否有快速/乾淨的方法來做到這一點?
謝謝,但不幸的是,這不會工作,因爲類不是每個id都要相同(請看我提供的示例)! – Angelica
您可以使用'x = x [np.argsort(x [:,1])]'然後'x = x [np.argsort(x [:,0])]''輕鬆地對數據進行排序。然後你有按ID和類排序的數據,並可以使用重塑。不過,如果你願意使用它,我認爲熊貓解決方案更簡潔清晰。 – kazemakase
編輯:感謝@kazemakase。我添加了排序行。 –