Numpy.array의 sort에 대한 개인 메모
우선 평범한 정렬
아시다시피 argsort를 사용한 일반 정렬.
test_sort.pyimport numpy as np
import matplotlib.pyplot as plt
# Prepare test array
np.random.seed(20190823)
array1d = np.random.random(size=100) # 1d array with random value
# Usual sort
sort_ind = np.argsort(array1d) # index array for sort of array1d
sorted_array1d = array1d[sort_ind] # sorted array1d
# Plot results #1
plt.figure()
plt.plot(array1d, label='Random', c='k')
plt.plot(sorted_array1d, label='Sorted')
plt.legend()
plt.show()
명확성을 위해 Matplotlib로 표시.
정렬 후 되돌리기
과연 자신 이외에 수요가 있는가.
test_sort.py (계속 1)# Re-sort
re_sort_ind = np.argsort(sort_ind) # index array for sort of sort_ind
# Plot results #2
plt.figure()
plt.plot(array1d, label='Random', c='k')
plt.plot(sorted_array1d, label='Sorted')
plt.plot(sorted_array1d[re_sort_ind], zorder=-2, label='Re-sorted', lw=5, c='gold')
plt.legend()
plt.show()
Matplotlib의 표시. 원래의 배열(검정색)과 정렬 후 되돌린 배열(황색)이 제대로 일치하고 있다.
첫 번째 열과 두 번째 열의 우선 순위로 정렬하고 싶습니다.
일본어가 어렵습니다.
이하를 봐 주시는 편이 빠를까.
test_sort.py (계속 2)# Prepare test array
np.random.seed(20190823)
array2d = np.random.randint(0,5,size=(100,2)) # 2d array with random value
# Plot results #3
plt.figure()
plt.plot(array2d[:,0], label='1st column')
plt.plot(array2d[:,1], label='2nd column')
plt.title('Before sort')
plt.legend()
plt.show()
100x2 테스트 배열에 대해 각 열에 대해 플롯.
추악하기 때문에 빨리 정렬합시다.
test_sort.py (계속 2)from operator import itemgetter
# Sort!
list2d = list(array2d)
sorted_list2d = sorted(list2d, key=itemgetter(0,1))
sorted_array2d = np.array(sorted_list2d)
# Plot results #4
plt.figure(dpi=120)
plt.plot(sorted_array2d[:,0], label='1st column')
plt.plot(sorted_array2d[:,1], label='2nd column')
plt.title('After sort')
plt.legend()
plt.show()
다음 결과.
첫 번째 열의 값(파란색)에 대해 정렬되어 있고 첫 번째 열의 값이 같으면 두 번째 열(주황색)의 값에 따라 정렬되어 있음을 알 수 있습니다.
itemgetter를 사용하기 위해 numpy 배열에서 list로 변환하고 다시 numpy 배열로 변환하고 있습니다. 수고는 걸립니다만, 짧고 간단하게 쓸 수 있다고 하는 의미로 편리할까 생각합니다.
물론,
sorted_list2d = sorted(list2d, key=itemgetter(0,1))
의 itemgetter 인수를 변경하여 지정하는 열, 순서를 자유롭게 지정할 수 있습니다.
test_sort.py (계속 3)# Sort!
sorted_list2d = sorted(list2d, key=itemgetter(1,0))
sorted_array2d = np.array(sorted_list2d)
# Plot results #5
plt.figure(dpi=120)
plt.plot(sorted_array2d[:,0], label='1st column')
plt.plot(sorted_array2d[:,1], label='2nd column')
plt.title('After sort')
plt.legend()
plt.show()
이전과는 반대로 두 번째 열의 값(주황색)에 대해 정렬되어 있고 두 번째 열의 값이 같으면 첫 번째 열(파란색)의 값에 따라 정렬되어 있음을 알 수 있습니다.
그럼 좋은 소트 라이프를.
Reference
이 문제에 관하여(Numpy.array의 sort에 대한 개인 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/thoon-thoon/items/74aae94680a51d29d811
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import numpy as np
import matplotlib.pyplot as plt
# Prepare test array
np.random.seed(20190823)
array1d = np.random.random(size=100) # 1d array with random value
# Usual sort
sort_ind = np.argsort(array1d) # index array for sort of array1d
sorted_array1d = array1d[sort_ind] # sorted array1d
# Plot results #1
plt.figure()
plt.plot(array1d, label='Random', c='k')
plt.plot(sorted_array1d, label='Sorted')
plt.legend()
plt.show()
과연 자신 이외에 수요가 있는가.
test_sort.py (계속 1)
# Re-sort
re_sort_ind = np.argsort(sort_ind) # index array for sort of sort_ind
# Plot results #2
plt.figure()
plt.plot(array1d, label='Random', c='k')
plt.plot(sorted_array1d, label='Sorted')
plt.plot(sorted_array1d[re_sort_ind], zorder=-2, label='Re-sorted', lw=5, c='gold')
plt.legend()
plt.show()
Matplotlib의 표시. 원래의 배열(검정색)과 정렬 후 되돌린 배열(황색)이 제대로 일치하고 있다.
첫 번째 열과 두 번째 열의 우선 순위로 정렬하고 싶습니다.
일본어가 어렵습니다.
이하를 봐 주시는 편이 빠를까.
test_sort.py (계속 2)# Prepare test array
np.random.seed(20190823)
array2d = np.random.randint(0,5,size=(100,2)) # 2d array with random value
# Plot results #3
plt.figure()
plt.plot(array2d[:,0], label='1st column')
plt.plot(array2d[:,1], label='2nd column')
plt.title('Before sort')
plt.legend()
plt.show()
100x2 테스트 배열에 대해 각 열에 대해 플롯.
추악하기 때문에 빨리 정렬합시다.
test_sort.py (계속 2)from operator import itemgetter
# Sort!
list2d = list(array2d)
sorted_list2d = sorted(list2d, key=itemgetter(0,1))
sorted_array2d = np.array(sorted_list2d)
# Plot results #4
plt.figure(dpi=120)
plt.plot(sorted_array2d[:,0], label='1st column')
plt.plot(sorted_array2d[:,1], label='2nd column')
plt.title('After sort')
plt.legend()
plt.show()
다음 결과.
첫 번째 열의 값(파란색)에 대해 정렬되어 있고 첫 번째 열의 값이 같으면 두 번째 열(주황색)의 값에 따라 정렬되어 있음을 알 수 있습니다.
itemgetter를 사용하기 위해 numpy 배열에서 list로 변환하고 다시 numpy 배열로 변환하고 있습니다. 수고는 걸립니다만, 짧고 간단하게 쓸 수 있다고 하는 의미로 편리할까 생각합니다.
물론,
sorted_list2d = sorted(list2d, key=itemgetter(0,1))
의 itemgetter 인수를 변경하여 지정하는 열, 순서를 자유롭게 지정할 수 있습니다.
test_sort.py (계속 3)# Sort!
sorted_list2d = sorted(list2d, key=itemgetter(1,0))
sorted_array2d = np.array(sorted_list2d)
# Plot results #5
plt.figure(dpi=120)
plt.plot(sorted_array2d[:,0], label='1st column')
plt.plot(sorted_array2d[:,1], label='2nd column')
plt.title('After sort')
plt.legend()
plt.show()
이전과는 반대로 두 번째 열의 값(주황색)에 대해 정렬되어 있고 두 번째 열의 값이 같으면 첫 번째 열(파란색)의 값에 따라 정렬되어 있음을 알 수 있습니다.
그럼 좋은 소트 라이프를.
Reference
이 문제에 관하여(Numpy.array의 sort에 대한 개인 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/thoon-thoon/items/74aae94680a51d29d811
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# Prepare test array
np.random.seed(20190823)
array2d = np.random.randint(0,5,size=(100,2)) # 2d array with random value
# Plot results #3
plt.figure()
plt.plot(array2d[:,0], label='1st column')
plt.plot(array2d[:,1], label='2nd column')
plt.title('Before sort')
plt.legend()
plt.show()
from operator import itemgetter
# Sort!
list2d = list(array2d)
sorted_list2d = sorted(list2d, key=itemgetter(0,1))
sorted_array2d = np.array(sorted_list2d)
# Plot results #4
plt.figure(dpi=120)
plt.plot(sorted_array2d[:,0], label='1st column')
plt.plot(sorted_array2d[:,1], label='2nd column')
plt.title('After sort')
plt.legend()
plt.show()
sorted_list2d = sorted(list2d, key=itemgetter(0,1))
# Sort!
sorted_list2d = sorted(list2d, key=itemgetter(1,0))
sorted_array2d = np.array(sorted_list2d)
# Plot results #5
plt.figure(dpi=120)
plt.plot(sorted_array2d[:,0], label='1st column')
plt.plot(sorted_array2d[:,1], label='2nd column')
plt.title('After sort')
plt.legend()
plt.show()
Reference
이 문제에 관하여(Numpy.array의 sort에 대한 개인 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/thoon-thoon/items/74aae94680a51d29d811텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)