Numpy: argsortλŠ” 닀차원 λ°°μ—΄μ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2014λ…„ 05μ›” 19일  Β·  12μ½”λ©˜νŠΈ  Β·  좜처: numpy/numpy

λ‹€μŒ μ½”λ“œλ₯Ό κ³ λ €ν•˜μ‹­μ‹œμ˜€.
a = np.random.random([5,5])
ind = np.argsort(a, μΆ•=1)
a_sorted = a[ind]
np.sort(a, μΆ•=1)

이제 a_sorted 및 a λ‘˜ λ‹€ 1좕을 따라 μ •λ ¬λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λͺ¨μ–‘μ‘°μ°¨ 더 이상 λ™μΌν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. a_sortedλŠ” (5,5,5)이고 μ—¬μ „νžˆ (5,5)μž…λ‹ˆλ‹€. 이것이 μ˜λ„ 된 행동이라면 λˆ„κ΅°κ°€ 이유λ₯Ό 말해 쀄 수 μžˆμŠ΅λ‹ˆκΉŒ?

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ‹€μ œλ‘œ 좜λ ₯을 μ‚¬μš©ν•˜μ—¬ ND 배열을 μ •λ ¬ν•˜λŠ” 방법에 λŒ€ν•œ μ˜ˆκ°€ 있으면 쒋을 κ²ƒμž…λ‹ˆλ‹€.

a[np.arange(np.shape(a)[0])[:,np.newaxis], np.argsort(a)] 보닀 더 읽기 μ‰¬μš΄ μ†”λ£¨μ…˜μ΄ 있으면 쒋을 κ²ƒμž…λ‹ˆλ‹€.

λͺ¨λ“  12 λŒ“κΈ€

argsort() 이(κ°€) μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€λ§Œ 인덱싱이 μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#advanced - 인덱싱

이 μ‹œλ„:

a = np.random.random([5,5])
i = np.arange(len(a))[:, np.newaxis]
j = np.argsort(a, axis=1)
a_sorted = a[i, j]
np.sort(a, axis=1)

λ‚˜λŠ” 같은 λ°©μ‹μœΌλ‘œ ν˜Όλž€μŠ€λŸ¬μ›Œν–ˆλ‹€. λ¬Έμ„œμ—λŠ” ꡬ체적으둜 λ‹€μŒκ³Ό 같이 λͺ…μ‹œλ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

보고
index_array : ndarray, int
μ§€μ •λœ 좕을 따라 a λ₯Ό μ •λ ¬ν•˜λŠ” 인덱슀 λ°°μ—΄μž…λ‹ˆλ‹€.
즉, a[index_array] λŠ” μ •λ ¬λœ a ν•©λ‹ˆλ‹€.

μ΄λŠ” 1D λ°°μ—΄μ—λ§Œ μ μš©λ©λ‹ˆλ‹€. 이것이 ND μ–΄λ ˆμ΄μ˜ κ²½μš°κ°€ μ•„λ‹˜μ„ λͺ…μ‹œν•˜λ„λ‘ λ¬Έμ„œλ₯Ό ν™•μž₯ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

@lzkelley 예, λ¬Έμ„œλ₯Ό κ°œμ„ ν•˜κΈ° μœ„ν•œ νŒ¨μΉ˜λŠ” 맀우 ν™˜μ˜ν•  κ²ƒμž…λ‹ˆλ‹€.

@shoyer μΏ¨, ν™λ³΄ν•˜κ³  μ—…λ°μ΄νŠΈ ν•˜κ² μŠ΅λ‹ˆλ‹€

μ‹€μ œλ‘œ 좜λ ₯을 μ‚¬μš©ν•˜μ—¬ ND 배열을 μ •λ ¬ν•˜λŠ” 방법에 λŒ€ν•œ μ˜ˆκ°€ 있으면 쒋을 κ²ƒμž…λ‹ˆλ‹€.

a[np.arange(np.shape(a)[0])[:,np.newaxis], np.argsort(a)] 보닀 더 읽기 μ‰¬μš΄ μ†”λ£¨μ…˜μ΄ 있으면 쒋을 κ²ƒμž…λ‹ˆλ‹€.

@seberg κ°€ μΆ”κ°€ν•œ 색인 κΈ°λŠ₯ 쀑 ν•˜λ‚˜λ‘œ λ§Œλ“€ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 그것이 인덱싱에 맀우 λΆ„λͺ…ν•˜κ²Œ λ§žμ§€ μ•ŠλŠ”λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 선택 κΈ°λŠ₯ μ •λ„λŠ” μ•„λ§ˆλ„ 더 μ‰¬μš΄ 일치일 κ²ƒμž…λ‹ˆλ‹€.

μƒˆ κΈ°λŠ₯의 경우 +1μž…λ‹ˆλ‹€.

argsort ( sort )의 전체 λͺ©μ μ΄ 인덱싱에 μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ?

argsort λŠ” 좕을 따라 μ •λ ¬ν•  인덱슀λ₯Ό μ œκ³΅ν•˜μ§€λ§Œ μ‹€μ œλ‘œ 인덱슀λ₯Ό μ‚¬μš©ν•˜μ—¬ ν•΄λ‹Ή 좕을 따라 μ •λ ¬ν•˜λŠ” 것은 λΆˆν•„μš”ν•˜κ²Œ μž₯ν™©ν•˜κ²Œ λ³΄μž…λ‹ˆλ‹€. λ‚΄κ°€ λͺ¨λ₯΄λŠ” 더 κ°„λ‹¨ν•œ 방법이 μ—†λ‹€λ©΄.

pick ν•¨μˆ˜ 정도가 μ•„λ§ˆλ„ 더 μ‰¬μš΄ 일치일 κ²ƒμž…λ‹ˆλ‹€.

#8708μž…λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰