2011-09-07 27 views
4

我有一個2d scipy數組(該oigion是一個RGB圖像的一個顏色通道)。我想找到一個元素的具體發生。我可以使用如何在沒有字段名稱的情況下使用order屬性對scipy數組進行排序?

np.argsort(arr) 

要做的工作。

但問題是我想沿着軸以特定的順序來做。這樣做的scipy例子如下

x = np.array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')]) 
    np.argsort(x, order=('x','y')) 

在上面的例子中,他們指定了字段的名稱和類型。之後,他們使用參數「order」來指定排序順序。

在我的情況下,我沒有提交的名稱...我該怎麼做?

非常感謝。

回答

4

好吧,假設你有一個普通的numpy的數組:

In [34]: x = np.array([(1, 0), (0, 1)]) 

你可以認爲這是所謂的structured array使用view

In [35]: y = x.ravel().view(dtype=[('x', x.dtype), ('y', x.dtype)]) 

現在你可以在y使用np.argsortorder參數:

In [36]: np.argsort(y, order=('x','y')) 
+0

我試過下面的例子,它給出索引0總是 'x = np.array([[0,3],[2,2],[5,5],[0,0],[6, 3]]), y = x.view(dtype = [('x',x.dtype),('y',x.dtype)]), np.argsort(y,order =('y' , 'X'))'返回 '陣列([[0], [0], [0], [0], [0]])'' – Shan

+0

y'應形狀的(5 ,),而不是(5,1)。用'y = np.array([(0,3),(2,2),(5,5),(0,0),(6,3)],dtype = [('x', ' unutbu

+0

通過這樣做的觀點是沒有創建...反正我的數據是在我寫的形式...如果你可以請指定的解決方案在相同的格式。 謝謝 – Shan

相關問題