2016-08-16 71 views
1

存在一個nd.array稱爲label1,打印出來時,它具有計算不同統計多維numpy的陣列

[[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 88 0] 
[0 0 0 ..., 0 0 0] 
..., 
[0 0 1 ..., 0 0 0] 
[0 0 0 ..., 0 2 0] 
[0 0 0 ..., 0 0 0]] 

它的形狀是(729,816)。有什麼方法可以知道這個數組中有多少個唯一值?當運行print(np.where(label1==label1.max()))時,結果看起來像這樣(array([ 0, 0, 0, ..., 234, 234, 234]), array([450, 451, 452, ..., 433, 434, 435])),這是否意味着它有兩個數組(或兩行)具有這些最大值?

回答

0
  1. 要獲得數組中排序的唯一值,請執行numpy.unique(label1)
  2. 在二維數組上調用時,numpy.where返回兩個數組,它們是所有匹配項的行和列座標。所以,如果numpy.where回報(array([0]), array([1]))這意味着一個匹配的行0中,第1列

編輯:如果要提取和打印的行和列從numpy.where座標,你可以不喜歡它這個:

rows, cols = np.where(label1==label1.max()) 
for row, col in zip(rows, cols): 
    print row, col 
+0

謝謝你的回答。關於給出的例子,這是否意味着在(行0,列450),(行0,列451)等處找到匹配項。打印函數不能列出那些長陣列。是否有任何方法根據(行列)組合打印出或提取所有這些位置? – user785099

+0

是的,它的確如此。您擁有訪問這些座標所需的全部信息。查看我的帖子的編輯。 – bpachev