치수에주의하십시오.
허락하다
x # initial numpy array
I = np.argsort(x) or I = x.argsort()
y = np.sort(x) or y = x.sort()
z # reverse sorted array
완전 반전
z = x[-I]
z = -np.sort(-x)
z = np.flip(y)
flip
에서 변경되었으며 1.15
이전 버전이 필요합니다 . 솔루션 : .1.14
axis
pip install --upgrade numpy
첫 번째 치수 반전
z = y[::-1]
z = np.flipud(y)
z = np.flip(y, axis=0)
두 번째 차원 반전
z = y[::-1, :]
z = np.fliplr(y)
z = np.flip(y, axis=1)
테스팅
100x10x10 어레이에서 1000 회 테스트.
Method | Time (ms)
-------------+----------
y[::-1] | 0.126659 # only in first dimension
-np.sort(-x) | 0.133152
np.flip(y) | 0.121711
x[-I] | 4.611778
x.sort() | 0.024961
x.argsort() | 0.041830
np.flip(x) | 0.002026
이는 주로 argsort
.
# Timing code
import time
import numpy as np
def timeit(fun, xs):
t = time.time()
for i in range(len(xs)): # inline and map gave much worse results for x[-I], 5*t
fun(xs[i])
t = time.time() - t
print(np.round(t,6))
I, N = 1000, (100, 10, 10)
xs = np.random.rand(I,*N)
timeit(lambda x: np.sort(x)[::-1], xs)
timeit(lambda x: -np.sort(-x), xs)
timeit(lambda x: np.flip(x.sort()), xs)
timeit(lambda x: x[-x.argsort()], xs)
timeit(lambda x: x.sort(), xs)
timeit(lambda x: x.argsort(), xs)
timeit(lambda x: np.flip(x), xs)
temp[::-1].sort()
역순으로 정렬해야한다는 것을 어떻게 압니까 ?? 내가 읽는 방법은 원래 배열을 뒤집은 다음 정렬 (오름차순)하는 것입니다. 원래 배열을 뒤집은 다음 (무작위 순서로 제공됨) 오름차순으로 정렬하면 배열이 역순으로 반환되는 이유는 무엇입니까?