我使用numpy並且有一個包含一些值的數組(ndarray類型)。這個陣列的形狀爲1000x1500。我重新塑造它Python,numpy排序數組
brr = np.reshape(arr, arr.shape[0]*arr.shape[1])
,當我試圖
brr.reverse()
AttributeError: ‘numpy.ndarray’ object has no attribute ‘reverse’
出現錯誤。 我如何分類這個數組?
我使用numpy並且有一個包含一些值的數組(ndarray類型)。這個陣列的形狀爲1000x1500。我重新塑造它Python,numpy排序數組
brr = np.reshape(arr, arr.shape[0]*arr.shape[1])
,當我試圖
brr.reverse()
AttributeError: ‘numpy.ndarray’ object has no attribute ‘reverse’
出現錯誤。 我如何分類這個數組?
如果你只是想扭轉這種局面:
brr[:] = brr[::-1]
其實,這個沿軸0。你也可以恢復任何其他軸反轉,如果陣列有一個以上。
排序以相反的順序:
>>> arr = np.random.random((1000,1500))
>>> brr = np.reshape(arr, arr.shape[0]*arr.shape[1])
>>> brr.sort()
>>> brr = brr[::-1]
>>> brr
array([ 9.99999960e-01, 9.99998167e-01, 9.99998114e-01, ...,
3.79672182e-07, 3.23871190e-07, 8.34517810e-08])
,或者使用argsort:
>>> arr = np.random.random((1000,1500))
>>> brr = np.reshape(arr, arr.shape[0]*arr.shape[1])
>>> sort_indices = np.argsort(brr)[::-1]
>>> brr[:] = brr[sort_indices]
>>> brr
array([ 9.99999849e-01, 9.99998950e-01, 9.99998762e-01, ...,
1.16993050e-06, 1.68760770e-07, 6.58422260e-08])
不,它是未排序的,我必須對其進行排序 – user2046488 2013-02-14 13:10:45
謝謝!嘗試argsort()沒有運氣。不知道[:: - 1] – user2046488 2013-02-14 13:36:42
嘗試此以降序的方式排序,
import numpy as np
a = np.array([1,3,4,5,6])
print -np.sort(-a)
排序在一維數組降序排列,傳遞reverse = True至sorted
。 由於@Erik指出,sorted
將首先製作列表的副本,然後對其進行反向排序。
import numpy as np
import random
x = np.arange(0, 10)
x_sorted_reverse = sorted(x, reverse=True)
排序使用python的迭代排序,它將首先將所有數據複製到列表中,然後進行相反的排序。雖然這確實會導致數據的反向排序,但它在numpy中並不這樣做,並且通常會消除使用numpy的任何好處。 – Erik 2015-07-22 18:56:30
謝謝你分享,Erik。我將它添加到答案中。 – rafaelvalle 2016-11-24 22:37:07
sort or reverse? – 2013-02-14 12:52:02
你期待'reverse()'做什麼? – NPE 2013-02-14 12:52:17
不能解決你的問題,但爲了讓你的代碼更整潔有效,你可以使用'arr.size'而不是'arr.shape [0] * arr.shape [1]'。 – Junuxx 2013-02-14 12:59:43