我正在使用numpy,并且有一个数组(ndarray类型),其中包含一些值。这个数组的形状是1000x1500。我对其进行了重新塑形。
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])
brr = np.sort(brr)[::-1]
- Nirmal尝试这个方法来按降序排序,
import numpy as np
a = np.array([1,3,4,5,6])
print -np.sort(-a)
sorted
。
正如@Erik指出的那样,sorted
首先会复制列表,然后按相反顺序排序。import numpy as np
import random
x = np.arange(0, 10)
x_sorted_reverse = sorted(x, reverse=True)
reverse()
做什么? - NPEarr.size
代替arr.shape[0]*arr.shape[1]
。 - Junuxx