我有一個numpy結構化陣列:
import numpy as np
arr1 = (np.array([32, 32, 32, 32, 32, 39, 21], dtype=np.int64),np.array([449, 451, 452, 453, 454, 463, 340], dtype=np.int64))
arr1_x = arr1[0]
arr1_y = arr1[1]
arr1_struct = np.empty(arr1_x.shape[0], dtype=[('x', int), ('y', int)])
arr1_struct["x"] = arr1_x
arr1_struct["y"] = arr1_y
我需要確定與唯一x值相對應的y值組。
使用上面的例子,我需要知道:
- 其中x =32, y =449, 451, 452, 453, 454
- 其中x =39, y =463
- 其中x =21, y =340
我正在調查,np.unique但這并沒有給出我所追求的。
提供此資訊的任何輸出格式都可以。一個例子是
x_unique = [32,39,21]y_unique = [ [449,451,452,453,454] , [463] , [340] ]
其中陣列/串列中索引 0 處的 X 值具有x_unique陣列/串列中索引 0 處的 Y 值,y_unique依此類推。
有沒有一種簡單有效的方法來做到這一點numpy?
uj5u.com熱心網友回復:
聽起來您需要使用pandas和使用類似資料框的結構。
df = pd.DataFrame([*arr1], index=['x', 'y']).T
這使
x y
0 32 449
1 32 451
2 32 452
3 32 453
4 32 454
5 39 463
6 21 340
然后,
>>> df.groupby('x')['y'].unique().to_dict()
{21: array([340]), 32: array([449, 451, 452, 453, 454]), 39: array([463])}
如果沒有 pandas,您可以參考此執行緒groupby以了解使用 numpy 或純 python執行 a 的類似方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/488968.html
下一篇:掩碼3dnumpy陣列
