Np argsort: Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ argsort Π² python
argsort | NumPy
numpy.argsort(a, axis=-1, kind='quicksort', order=None)
Π€ΡΠ½ΠΊΡΠΈΡ argsort() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΡΠΎΡΡΠΈΡΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
- a — ΠΌΠ°ΡΡΠΈΠ² NumPy ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΎΠ±ΡΠ΅ΠΊΡ.
- ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ².
- axis — ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ).
- ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΡΡ Π²Π΄ΠΎΠ»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠ»ΠΈ ΡΠ°Π²Π΅Π½ None, ΡΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΆΠ°ΡΠΎΠΌΡ Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
axis = -1
, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΎΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°. - kind — ΡΡΡΠΎΠΊΠ° (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ).
- ΠΠ΄Π½Π° ΡΡΡΠΎΠΊΠ° ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°
{'quicksort', 'mergesort', 'heapsort', 'stable'}
, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅'stable'
ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π²ΡΠ±ΠΎΡΡ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ³ΠΎ, Π»ΡΡΡΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π΄Π»Ρ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ ΡΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡkind = 'quicksort'
. - order — ΡΡΡΠΎΠΊΠ° ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠΎΠΊ (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ).
- Π ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΠ°ΡΡΠΈΠ²
a
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ, ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΠΌ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΎ ΠΈΠΌΡ, ΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠ°Π²ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Ρ Π½Π΅ Π²ΡΠ΅ ΠΏΠΎΠ»Ρ, ΡΠΎ Π½Π΅ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π²dtype
ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
- ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ:
- ndarray — ΠΌΠ°ΡΡΠΈΠ² NumPy
- ΠΠ°ΡΡΠΈΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡΡΠΈΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π²Π΄ΠΎΠ»Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΎΡΠΈ
axis
. ΠΡΠ»ΠΈa
ΡΡΠΎ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎa[np.argsort(a)]
Π²Π΅ΡΠ½Π΅Ρ Π΅Π³ΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ. ΠΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² Π»ΠΈΠ±ΠΎ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π½ΠΈΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², Π»ΠΈΠ±ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉnp.take_along_axis(a, np.argsort(a, axis = ax), axis=ax)
.
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ:
>>> import numpy as np
>>>
>>> a = np.
random.randint(0, 20, 10)
>>> a
array([ 8, 17, 8, 14, 14, 16, 4, 3, 12, 6])
>>>
>>> ind = np.argsort(a)
>>> ind
array([7, 6, 9, 0, 2, 8, 3, 4, 5, 1], dtype=int32)
>>>
>>> a[ind]
array([ 3, 4, 6, 8, 8, 12, 14, 14, 16, 17])
ΠΠ²ΡΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ:
>>> a = np.random.randint(0, 20, (3, 4))
>>> a
array([[19, 3, 5, 6],
[ 0, 0, 3, 2],
[13, 14, 8, 13]])
>>>
>>>
>>> # ΠΠ½Π΄Π΅ΠΊΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΡΡΠΎΠΊ:
... ind_r = np.argsort(a) # ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ ind_r = np.argsort(a, axis = 1)
>>> ind_r
array([[1, 2, 3, 0],
[0, 1, 3, 2],
[2, 0, 3, 1]], dtype=int32)
>>>
>>>
>>> # ΠΠ½Π΄Π΅ΠΊΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ²:
... ind_c = np.argsort(a, axis = 0)
>>> ind_c
array([[1, 1, 1, 1],
[2, 0, 0, 0],
[0, 2, 2, 2]], dtype=int32)
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² — Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ np. take_along_axis()
:
>>> np.take_along_axis(a, ind_r, axis = 1)
array([[ 3, 5, 6, 19],
[ 0, 0, 2, 3],
[ 8, 13, 13, 14]])
>>>
>>> np.take_along_axis(a, ind_c, axis = 0)
array([[ 0, 0, 3, 2],
[13, 3, 5, 6],
[19, 14, 8, 13]])
Π€ΡΠ½ΠΊΡΠΈΡ np.argsort()
ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°:
>>> arr = np.array([(0, 12), (0, 11), (1, 55),
... (0, 87), (1, 54), (1, 21)],
... dtype = np.dtype([('a', int), ('b', int)]))
>>> arr
array([(0, 12), (0, 11), (1, 55), (0, 87), (1, 54), (1, 21)],
dtype=[('a', '<i4'), ('b', '<i4')])
>>>
>>> ind = np.argsort(arr, order = ['a', 'b'])
>>> ind
array([1, 0, 3, 5, 4, 2], dtype=int32)
>>>
>>> arr[ind]
array([(0, 11), (0, 12), (0, 87), (1, 21), (1, 54), (1, 55)],
dtype=[('a', '<i4'), ('b', '<i4')])
>>>
>>>
>>> ind = np.
argsort(arr, order = ['b', 'a'])
>>> ind
array([1, 0, 5, 4, 2, 3], dtype=int32)
>>>
>>> arr[ind]
array([(0, 11), (0, 12), (1, 21), (1, 54), (1, 55), (0, 87)],
dtype=[('a', '<i4'), ('b', '<i4')])
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ argsort Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ±ΡΠ²Π°Π½ΠΈΡ?
ΠΡΠ»ΠΈ Π²Ρ ΠΎΡΡΠΈΡΠ°Π΅ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ², ΡΠ°ΠΌΡΠ΅ Π½ΠΈΠ·ΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΠ°ΠΌΡΠΌΠΈ Π²ΡΡΠΎΠΊΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΠ½Π΄Π΅ΠΊΡΡ n
ΡΠ°ΠΌΡΡ
Π²ΡΡΠΎΠΊΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π²Π½Ρ:
(-avgDists).argsort()[:n]
ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°ΡΡΡΠΆΠ΄Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
, ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ΄ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌΠΈ Π² argsort. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΈΠ· Ρ
Π²ΠΎΡΡΠ° argsort, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ n
ΡΠ°ΠΌΡΡ
Π²ΡΡΠΎΠΊΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
avgDists.
argsort()[::-1][:n]
ΠΠ±Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠΌΠ΅ΡΡ O(n log n) Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ·ΠΎΠ² argsort
ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π΄Π΅ΡΡ Π΄ΠΎΠΌΠΈΠ½ΠΈΡΡΡΡΠΈΠΌ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠΌ. ΠΠΎ Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° Π΅ΡΡΡ Ρ
ΠΎΡΠΎΡΠ΅Π΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ: ΠΎΠ½ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΡΡΠΈΡΠ°Π½ΠΈΠ΅ O(n) ΠΌΠ°ΡΡΠΈΠ²Π° ΡΡΠ΅Π·ΠΎΠΌ O(1) . ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π²Π½ΡΡΡΠΈ ΡΠΈΠΊΠ»ΠΎΠ², ΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΈΠ³ΡΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΈΠ·Π±Π΅Π³Π°Ρ ΡΡΠΎΠ³ΠΎ ΠΎΡΡΠΈΡΠ°Π½ΠΈΡ, Π° Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ, ΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠΏΠΈΡ Π²ΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ , ΡΡΠΎ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π΄Π°ΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ: Π΅ΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π² argsort
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ kind='mergesort'
, ΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠΎΡ
ΡΠ°Π½ΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π½ΠΎ Π²ΡΠΎΡΠ°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π½Π°ΡΡΡΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ (Ρ. Π΅. ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΠ°Π²Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ).
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠΌΠΈΠ½Π³ΠΎΠ² :
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· 100 ΠΏΠΎΠΏΠ»Π°Π²ΠΊΠΎΠ² ΠΈ Ρ Π²ΠΎΡΡ Π΄Π»ΠΈΠ½ΠΎΠΉ 30, ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π±ΡΠ» ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 15% Π±ΡΡΡΡΠ΅Π΅
>>> avgDists = np.
random.rand(100)
>>> n = 30
>>> timeit (-avgDists).argsort()[:n]
1.93 Β΅s Β± 6.68 ns per loop (mean Β± std. dev. of 7 runs, 1000000 loops each)
>>> timeit avgDists.argsort()[::-1][:n]
1.64 Β΅s Β± 3.39 ns per loop (mean Β± std. dev. of 7 runs, 1000000 loops each)
>>> timeit avgDists.argsort()[-n:][::-1]
1.64 Β΅s Β± 3.66 ns per loop (mean Β± std. dev. of 7 runs, 1000000 loops each)
ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² argsort ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΌΠΈΠ½ΠΈΡΡΡΡΠΈΠΌ, ΠΈ Π½Π΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
>>> avgDists = np.random.rand(1000)
>>> n = 300
>>> timeit (-avgDists).argsort()[:n]
21.9 Β΅s Β± 51.2 ns per loop (mean Β± std. dev. of 7 runs, 10000 loops each)
>>> timeit avgDists.argsort()[::-1][:n]
21.7 Β΅s Β± 33.3 ns per loop (mean Β± std. dev. of 7 runs, 10000 loops each)
>>> timeit avgDists.argsort()[-n:][::-1]
21.9 Β΅s Β± 37.1 ns per loop (mean Β± std. dev. of 7 runs, 10000 loops each)
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΎΡ nedim Π½ΠΈΠΆΠ΅ Π½Π΅Π²Π΅ΡΠ΅Π½. Π£ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ±Π΅ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π³Π°ΡΡ ΠΏΠΎ Π²ΠΈΠ΄Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΊΠΎΠΏΠΈΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅.
ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² numpy Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ±ΡΠ²Π°Π½ΠΈΡ? Ru Python
Π― ΡΠ΄ΠΈΠ²Π»Π΅Π½, ΡΡΠΎ ΡΡΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ Π½Π΅ Π·Π°Π΄Π°Π²Π°Π»ΡΡ ΡΠ°Π½ΡΡΠ΅, Π½ΠΎ Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ Π½Π°ΡΠ΅Π» Π΅Π³ΠΎ Π½Π° SO ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ np.sort
.
Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² numpy, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
> temp = np.random.randint(1,10, 10) > temp array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4])
ΠΡΠ»ΠΈ Ρ Π΅Π³ΠΎ ΡΠΎΡΡΠΈΡΡΡ, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ:
> np.sort(temp) array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7])
Π½ΠΎ Ρ Ρ ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ±ΡΠ²Π°Π½ΠΈΡ.
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π·Π½Π°Ρ, ΡΡΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠ³Ρ:
reverse_order = np.sort(temp)[::-1]
Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π»ΠΈ ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅? Π Π°Π·Π²Π΅ ΠΎΠ½ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠΏΠΈΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΡ ΠΊΠΎΠΏΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅? ΠΡΠ»ΠΈ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΠΊ, Π΅ΡΡΡ Π»ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°? ΠΡΠΎ Π½Π΅ ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ np.
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π½Π°ΠΊΠ° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²Π΅ΡΠ΅ΠΉ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. sort
temp[::-1].sort()
ΡΠΎΡΡΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ² Π½Π° ΠΌΠ΅ΡΡΠ΅, np.sort(temp)[::-1]
ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ².
In [25]: temp = np.random.randint(1,10, 10) In [26]: temp Out[26]: array([5, 2, 7, 4, 4, 2, 8, 6, 4, 4]) In [27]: id(temp) Out[27]: 139962713524944 In [28]: temp[::-1].sort() In [29]: temp Out[29]: array([8, 7, 6, 5, 4, 4, 4, 4, 2, 2]) In [30]: id(temp) Out[30]: 139962713524944
ΠΠ»Ρ ΠΊΠΎΡΠΎΡΠΊΠΈΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ np.argsort()
, Π½Π°ΠΉΠ΄Ρ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΡΠ΅Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°:
In [37]: temp = np.random.randint(1,10, 10) In [38]: %timeit np.sort(temp)[::-1] 100000 loops, best of 3: 4.65 Β΅s per loop In [39]: %timeit temp[np.argsort(-temp)] 100000 loops, best of 3: 3.91 Β΅s per loop
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π²Π°Ρ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ np.
. ΠΠ²Π° Π΄ΡΡΠ³ΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄Π°, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ
Π·Π΄Π΅ΡΡ, Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Ρ. sort(temp)[::-1]
>>> a=np.array([5, 2, 7, 4, 4, 2, 8, 6, 4, 4]) >>> np.sort(a) array([2, 2, 4, 4, 4, 4, 5, 6, 7, 8]) >>> -np.sort(-a) array([8, 7, 6, 5, 4, 4, 4, 4, 2, 2])
4 ΠΏΡΠΈΠ΅ΠΌΠ° Python NumPy, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½ΠΎΠ²ΠΈΡΠΎΠΊ
NumPyΒ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π²Β Python, ΠΈ, ΡΡΠΈΡΡΠ²Π°Ρ Π΅Π΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°,Β ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Python ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΄Π°Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. ΠΠ°ΡΡΠΈΠ²Ρ Numpy Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Ρ, ΡΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠΈ Python. ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.Β
ΠΠΎΠΌΠΎΠ³Π°Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ ΠΈ Π΄ΡΡΠ·ΡΡΠΌ Ρ ΡΡΡΠ΄Π½ΠΎΡΡΡΠΌΠΈ Π² NumPy, ΠΌΡ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ 4 ΠΏΡΠΈΠ΅ΠΌΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½ΠΎΠ²ΠΈΡΠΎΠΊ Python. ΠΡΠΈ ΡΠΈΡΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΡΠ΅ ΠΈ ΡΠΈΡΠ°Π΅ΠΌΡΠ΅ ΠΊΠΎΠ΄Ρ. Β
1. Arg-ΡΡΠ½ΠΊΡΠΈΠΈ β ΠΏΠΎΠ·ΠΈΡΠΈΠΈ
ΠΠ»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈΒ arr, np.argmax(arr), np.argmin(arr) ΠΈ np.argwhere(condition(arr)) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. Π₯ΠΎΡΡ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ arg ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, ΠΌΡ ΡΠ°ΡΡΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ np.argsort(), Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡΡΠΈΡΡΡΡ ΠΌΠ°ΡΡΠΈΠ².
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ np.argsortΒ Π΄Π»ΡΒ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΏΠΎ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Ρ.Β ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΏΡΠΈΠΌΠ΅ΡΒ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠΌΠ΅Π½ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠΊΠ·Π°ΠΌΠ΅Π½Π°. ΠΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠΌΠ΅Π½ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ np.argsort(np.argsort(score)).
1. score = np.array([70, 60, 50, 10, 90, 40, 80])
2. name = np.array(['Ada', 'Ben', 'Charlie', 'Danny', 'Eden', 'Fanny', 'George'])
3. sorted_name = name[np.argsort(score)] # an array of names in ascending order of their scores
4.print(sorted_name) # ['Danny' 'Fanny' 'Charlie' 'Ben' 'Ada' 'George' 'Eden']
5.
6. original_name = sorted_name[np.argsort(np.argsort(score))]
7. print(original_name) # ['Ada' 'Ben' 'Charlie' 'Danny' 'Eden' 'Fanny' 'George']
8.
9.
10. %timeit name[np.argsort(score)]
11. # 1.83 Β΅s Β± 182 ns per loop (mean Β± std. dev. of 7 runs, 100000 loops each)
12. %timeit sorted(zip(score, name))
13. # 3.2 Β΅s Β± 76.7 ns per loop (mean Β± std. dev. of 7 runs, 100000 loops each)
ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΠ΅, Π½Π΅ΠΆΠ΅Π»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Python sorted(zip()). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½Π°, ΠΏΠΎΠΆΠ°Π»ΡΠΉ, Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½Π°.
2. ΠΡΠΎΠ΄ΠΊΠ°ΡΡΠΈΠ½Π³ β ΡΠΎΡΠΌΡ
ΠΡΠΎΠ΄ΠΊΠ°ΡΡΠΈΠ½Π³ — ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π½ΠΎΠ²ΠΈΡΠΎΠΊ numpy ΠΌΠΎΠ³ ΡΠΆΠ΅ Π½Π΅Π²ΠΎΠ»ΡΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠ½ΠΎΠ³ΠΈΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ numpy ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΠΏΠ°ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²Β ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΌΡΒ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΡΠΎΠ΄ΠΊΠ°ΡΡΠΈΠ½Π³ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈΒ Π±Π΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ
ΠΊΠΎΠΏΠΈΠΉ Π΄Π°Π½Π½ΡΡ
. ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π° 1, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ arr + 1Β Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ arr. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π²ΡΠ΅ Π»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ 2, Ρ ΠΏΠΎΠΌΠΎΡΡΡ arr > 2.
ΠΠΎ ΠΊΠ°ΠΊ ΠΌΡ ΡΠ·Π½Π°Π΅ΠΌ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Π»ΠΈ Π΄Π²Π° ΠΌΠ°ΡΡΠΈΠ²Π° Ρ Π±ΡΠΎΠ΄ΠΊΠ°ΡΡΠΈΠ½Π³?
Argument 1 (4D array): 7 Γ 5 Γ 3 Γ 1
Argument 2 (3D array): 1 Γ 3 Γ 9
Output (4D array): 7 Γ 5 Γ 3 Γ 9
ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π»ΠΈΠ±ΠΎ ΡΠ°Π²Π½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, Π»ΠΈΠ±ΠΎΒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ ΡΠ°Π²Π½ΠΎ 1. ΠΠ°ΡΡΠΈΠ²Ρ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ, ΡΡΠΎ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅.
3. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Ellipsis ΠΈ NewAxis
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π·ΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° numpy — ΡΡΠΎ i:jΒ Π³Π΄Π΅Β i, jΒ — Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° numpy arr = np.array(range(10)) ΠΊΠΎΠΌΠ°Π½Π΄Π° arr[:3] Π΄Π°Π΅Ρ [0, 1, 2].Β
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡΠΌΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΒ : Β Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ …Β Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΎΡΡΠΌ. Π’ΠΎΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠ΅ΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ.Β
1. arr = np.array(range(1000)).reshape(2,5,2,10,-1)
2. print(arr[:,:,:,3,2] == arr[...,3,2])
3. # [[[ True, True],
4. # [ True, True],
5. # [ True, True],
6. # [ True, True],
7. # [ True, True]],
8. # [[ True, True],
9. # [ True, True],
10. # [ True, True],
11. # [ True, True],
12. # [ True, True]]])
13.
14. print(arr.shape) # (2, 5, 2, 10, 5)
15. print(arr[...,np.newaxis,:,:,:].shape) # (2, 5, 1, 2, 10, 5)
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅, np.newaxis,Β ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅,Β Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΡΡ ΠΎΡΡΒ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠΈ. ΠΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ΡΠΎΡΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π° ΠΎΠ΄Π½Ρ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ. Π₯ΠΎΡΡ ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ np.expand_dims(), ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ np.newaxis Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎ ΠΈ, ΠΏΠΎΠΆΠ°Π»ΡΠΉ, ΠΈΠ·ΡΡΠ½ΠΎ.Β
4. ΠΠ°ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² — ΡΠ΅Π»Π΅ΠΊΡΠΈΡ
ΠΠ°Π±ΠΎΡΡ Π΄Π°Π½Π½ΡΡ
Π½Π΅ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½Ρ. Β ΠΠ½ΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΈΠ»ΠΈ Π½Π΅Π²Π΅ΡΠ½ΡΠΌΠΈ Π·Π°ΠΏΠΈΡΡΠΌΠΈ, ΠΈ ΠΌΡ ΡΠ°ΡΡΠΎ Ρ
ΠΎΡΠΈΠΌ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.Β ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΠΌΠ΅ΡΠ΅ΠΎΡΡΠ°Π½ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ·-Π·Π° ΡΠ±ΠΎΡ Π΄Π°ΡΡΠΈΠΊΠ°.
Π£ Numpy Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡΠ»ΡΒ numpy.ma, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²Ρ Π΄Π°Π½Π½ΡΡ Β Ρ ΠΌΠ°ΡΠΊΠ°ΠΌΠΈ. ΠΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² numpy ΠΈ ΠΌΠ°ΡΠΊΡ, ΠΊΠΎΡΠΎΡΠ°ΡΒ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ.Β
np.ma.MaskedArray(data=arr, mask=invalid_mask)
ΠΠ΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊ. ΠΡΠ»ΠΈ ΠΌΡ Π·Π½Π°Π΅ΠΌ Π·Π°ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°ΠΆΠ΅ΠΌ -999, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π·Π°ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ np.ma.masked_values(arr, value=-999). ΠΡΠ±Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ numpy, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ°Ρ Π·Π°ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ ΡΡΠΈ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.
1. import math
2. def is_prime(n):
3. assert n > 1, 'Input must be larger than 1'
4.if n % 2 == 0 and n > 2:
5. return False
6. return all(n % i for i in range(3, int(math.sqrt(n)) + 1, 2))
7.
8. arr = np.array(range(2,100))
9. non_prime_mask = [not is_prime(n) for n in a]
10. prime_arr = np.ma.MaskedArray(data=arr, mask=non_prime_mask)
11. print(prime_arr)
12. # [2 3 -- 5 -- 7 -- -- -- 11 -- 13 -- -- -- 17 -- 19 -- -- -- 23 -- -- -- --
13. # -- 29 -- 31 -- -- -- -- -- 37 -- -- -- 41 -- 43 -- -- -- 47 -- -- -- --
14. # -- 53 -- -- -- -- -- 59 -- 61 -- -- -- -- -- 67 -- -- -- 71 -- 73 -- --
15. # -- -- -- 79 -- -- -- 83 -- -- -- -- -- 89 -- -- -- -- -- -- -- 97 -- --]
16.
17. arr = np.array(range(11))
18. print(arr.sum()) # 55
19.
20. arr[-1] = -999 # indicates missing value
21. masked_arr = np.ma.masked_values(arr, -999)
22. print(masked_arr.sum()) # 45
23.
ΠΡΡΠΎΡΠ½ΠΈΠΊ
Numpy sort-sort (), argsort ()
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ
1. Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°: sort ()
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ: Π‘ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²
numpy.
sort(a, axis=-1, kind='quicksort', order=None)
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
- a: ΠΌΠ°ΡΡΠΈΠ² numpy Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ
- ΠΎΡΡ: ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ -1 ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, None ΡΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
- ΠΠΈΠ΄: Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π΅ΡΡΡ: Β«Π±ΡΡΡΡΠ°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°Β», Β«ΡΠ»ΠΈΡΠ½ΠΈΠ΅Β», Β«heapsortΒ», Β«ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉΒ»
- ΠΏΠΎΡΡΠ΄ΠΎΠΊ: ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΠΏΠΎΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΎ
ΠΡΠΈΠΌΠ΅Ρ:
import numpy as np
a = np.array([[1,4],[3,1]])
# Π‘ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ
np.sort(a)
=> narray([[1, 4],
[1, 3]])
# Π‘ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ 1D, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ ΡΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ
np.sort(a, axis=0)
=> narray([[1, 1],
[3, 4]])
# Π‘ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ
np.sort(a, axis=None)
=> narray([1, 1, 3, 4])
# ΠΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°
dtype = [('name', 'S10'), ('height', float), ('age', int)]
values = [('Arthur', 1.
8, 41), ('Lancelot', 1.9, 38), ('Galahad', 1.7, 38)]
a = np.array(values, dtype=dtype)
np.sort(a, order='height')
=> array([('Galahad', 1.7, 38), ('Arthur', 1.8, 41), ('Lancelot', 1.8999999999999999, 38)],
dtype=[('name', '|S10'), ('height', '<f8'), ('age', '<i4')])
2. Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎΠ΄ΡΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°: argsort ()
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ: Π‘Π°ΠΌ ΠΌΠ°ΡΡΠΈΠ² ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ, Π° ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ
numpy.argsort(a, axis=-1, kind='quicksort', order=None)
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
- a: ΠΌΠ°ΡΡΠΈΠ² numpy Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ
- ΠΎΡΡ: ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ -1 ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, None ΡΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
- ΠΠΈΠ΄: Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π΅ΡΡΡ: Β«Π±ΡΡΡΡΠ°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°Β», Β«ΡΠ»ΠΈΡΠ½ΠΈΠ΅Β», Β«heapsortΒ», Β«ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉΒ»
- ΠΏΠΎΡΡΠ΄ΠΎΠΊ: ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΠΏΠΎΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΎ
ΠΡΠΈΠΌΠ΅Ρ:
import numpy as np
# ΠΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²
x = np.
2)
0
Π½Π΅Ρ
βΠ‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌβ
2
Π (ΠΏ * ΠΆΡΡΠ½Π°Π»Π° (ΠΏ))
~ Π / 2
Π΄Π°
Β«ΠΠΈΡΠ°ΠΌΠΈΠ΄Π°Π»ΡΠ½Π°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°Β»
3
Π (ΠΏ * ΠΆΡΡΠ½Π°Π»Π° (ΠΏ))
0
Π½Π΅Ρ
numpy.sort ()
Π€ΡΠ½ΠΊΡΠΈΡ sort () Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠΏΠΈΡ Π²Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ β
numpy.sort(a, axis, kind, order)
ΠΡΠ΄Π°,
Sr.No. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ 1 ΠΠ°ΡΡΠΈΠ² Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ
2 ΠΎΡΡ
ΠΡΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½ ΠΌΠ°ΡΡΠΈΠ². ΠΡΠ»ΠΈ Π½Π΅Ρ, ΠΌΠ°ΡΡΠΈΠ² Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ, ΡΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΎΡΠΈ
3 ΠΠΎΠ±ΡΡΠΉ
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ Π±ΡΡΡΡΠ°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°
4 ΠΏΠΎΡΡΠ΄ΠΎΠΊ
ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»Ρ, ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»Π΅ΠΉ
ΠΠ°ΡΡΠΈΠ² Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ
ΠΎΡΡ
ΠΡΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½ ΠΌΠ°ΡΡΠΈΠ².
ΠΡΠ»ΠΈ Π½Π΅Ρ, ΠΌΠ°ΡΡΠΈΠ² Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ, ΡΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΎΡΠΈ
ΠΠΎΠ±ΡΡΠΉ
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ Π±ΡΡΡΡΠ°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°
ΠΏΠΎΡΡΠ΄ΠΎΠΊ
ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»Ρ, ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»Π΅ΠΉ
ΠΏΡΠΈΠΌΠ΅Ρ
Live Demo
import numpy as np
a = np.array([[3,7],[9,1]])
print 'Our array is:'
print a
print '\n'
print 'Applying sort() function:'
print np.sort(a)
print '\n'
print 'Sort along axis 0:'
print np.sort(a, axis = 0)
print '\n'
# Order parameter in sort function
dt = np.dtype([('name', 'S10'),('age', int)])
a = np.array([("raju",21),("anil",25),("ravi", 17), ("amar",27)], dtype = dt)
print 'Our array is:'
print a
print '\n'
print 'Order by name:'
print np.sort(a, order = 'name')
ΠΡΠΎ Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β
Our array is:
[[3 7]
[9 1]]
Applying sort() function:
[[3 7]
[1 9]]
Sort along axis 0:
[[3 1]
[9 7]]
Our array is:
[('raju', 21) ('anil', 25) ('ravi', 17) ('amar', 27)]
Order by name:
[('amar', 27) ('anil', 25) ('raju', 21) ('ravi', 17)]
numpy.
argsort ()
Π€ΡΠ½ΠΊΡΠΈΡ numpy.argsort () Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΡΠ²Π΅Π½Π½ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π²Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π²Π΄ΠΎΠ»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΎΡΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π²ΠΈΠ΄ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π΄Π°Π½Π½ΡΡ
. ΠΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΏΡΠΈΠΌΠ΅Ρ
Live Demo
import numpy as np
x = np.array([3, 1, 2])
print 'Our array is:'
print x
print '\n'
print 'Applying argsort() to x:'
y = np.argsort(x)
print y
print '\n'
print 'Reconstruct original array in sorted order:'
print x[y]
print '\n'
print 'Reconstruct the original array using loop:'
for i in y:
print x[i],
ΠΡΠΎ Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β
Our array is:
[3 1 2]
Applying argsort() to x:
[1 2 0]
Reconstruct original array in sorted order:
[1 2 3]
Reconstruct the original array using loop:
1 2 3
numpy.lexsort ()
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΡΠ²Π΅Π½Π½ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠ»Π°Π²ΠΈΡ. ΠΠ»ΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΠΎΠ»Π±ΡΠ° Π² ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅.
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΊΠ»ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ.
ΠΏΡΠΈΠΌΠ΅Ρ
Live Demo
import numpy as np
nm = ('raju','anil','ravi','amar')
dv = ('f.y.', 's.y.', 's.y.', 'f.y.')
ind = np.lexsort((dv,nm))
print 'Applying lexsort() function:'
print ind
print '\n'
print 'Use this index to get sorted data:'
print [nm[i] + ", " + dv[i] for i in ind]
ΠΡΠΎ Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β
Applying lexsort() function:
[3 1 0 2]
Use this index to get sorted data:
['amar, f.y.', 'anil, s.y.', 'raju, f.y.', 'ravi, s.y.']
ΠΠΎΠ΄ΡΠ»Ρ NumPy ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΄ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π²Π½ΡΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠΎΡΡΡΠΏΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π½Π°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ°, ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΡΡΠ»ΠΎΠ²ΠΈΡ.
numpy.argmax () ΠΈ numpy.argmin ()
ΠΡΠΈ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π²Π΄ΠΎΠ»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΎΡΠΈ.
ΠΏΡΠΈΠΌΠ΅Ρ
Live Demo
import numpy as np
a = np.array([[30,40,70],[80,20,10],[50,90,60]])
print 'Our array is:'
print a
print '\n'
print 'Applying argmax() function:'
print np.argmax(a)
print '\n'
print 'Index of maximum number in flattened array'
print a.flatten()
print '\n'
print 'Array containing indices of maximum along axis 0:'
maxindex = np.argmax(a, axis = 0)
print maxindex
print '\n'
print 'Array containing indices of maximum along axis 1:'
maxindex = np.argmax(a, axis = 1)
print maxindex
print '\n'
print 'Applying argmin() function:'
minindex = np.argmin(a)
print minindex
print '\n'
print 'Flattened array:'
print a.flatten()[minindex]
print '\n'
print 'Flattened array along axis 0:'
minindex = np.argmin(a, axis = 0)
print minindex
print '\n'
print 'Flattened array along axis 1:'
minindex = np.argmin(a, axis = 1)
print minindex
ΠΡΠΎ Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β
Our array is:
[[30 40 70]
[80 20 10]
[50 90 60]]
Applying argmax() function:
7
Index of maximum number in flattened array
[30 40 70 80 20 10 50 90 60]
Array containing indices of maximum along axis 0:
[1 2 0]
Array containing indices of maximum along axis 1:
[2 0 1]
Applying argmin() function:
5
Flattened array:
10
Flattened array along axis 0:
[0 1 1]
Flattened array along axis 1:
[0 2 0]
numpy.
nonzero ()
Π€ΡΠ½ΠΊΡΠΈΡ numpy.nonzero () Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π½Π΅Π½ΡΠ»Π΅Π²ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΎ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅.
ΠΏΡΠΈΠΌΠ΅Ρ
Live Demo
import numpy as np
a = np.array([[30,40,0],[0,20,10],[50,0,60]])
print 'Our array is:'
print a
print '\n'
print 'Applying nonzero() function:'
print np.nonzero (a)
ΠΡΠΎ Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β
Our array is:
[[30 40 0]
[ 0 20 10]
[50 0 60]]
Applying nonzero() function:
(array([0, 0, 1, 1, 2, 2]), array([0, 1, 1, 2, 0, 2]))
numpy.where ()
Π€ΡΠ½ΠΊΡΠΈΡ where () Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΎ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅, Π³Π΄Π΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ.
ΠΏΡΠΈΠΌΠ΅Ρ
Live Demo
import numpy as np
x = np.arange(9.).reshape(3, 3)
print 'Our array is:'
print x
print 'Indices of elements > 3'
y = np.where(x > 3)
print y
print 'Use these indices to get elements satisfying the condition'
print x[y]
ΠΡΠΎ Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β
Our array is:
[[ 0. 1. 2.]
[ 3. 4. 5.]
[ 6. 7. 8.]]
Indices of elements > 3
(array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2]))
Use these indices to get elements satisfying the condition
[ 4. 5. 6. 7. 8.]
numpy.extract ()
Π€ΡΠ½ΠΊΡΠΈΡ extract () Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠΈΠ΅ Π»ΡΠ±ΠΎΠΌΡ ΡΡΠ»ΠΎΠ²ΠΈΡ.
Live Demo
import numpy as np
x = np.arange(9.).reshape(3, 3)
print 'Our array is:'
print x
# define a condition
condition = np.mod(x,2) == 0
print 'Element-wise value of condition'
print condition
print 'Extract elements using condition'
print np.extract(condition, x)
ΠΡΠΎ Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β
ΠΠ°ΠΊ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² Numpy | ΠΏΠΈΡΠΎΠ½
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² Numpy. Π Numpy Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΠΎΠ½ΡΡΡ ΠΈΡ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ # 1: ΠΡΠΎΡΡΠΎ ΠΎΡΡΠΎΡΡΠΈΡΡΠΉΡΠ΅ Π΄Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ sort ().
import
numpy as np
Β Β
Β
a
=
np.array([[
12
,
15
], [
10
,
1
]])
arr1
=
np.sort(a, axis
=
0
)Β Β Β Β Β Β Β Β
print
(
"Along first axis : \n"
, arr1)Β Β Β Β Β Β Β Β
Β Β
Β
Β Β
Β
a
=
np.array([[
10
,
15
], [
12
,
1
]])
arr2
=
np.sort(a, axis
=
-
1
)Β Β Β Β Β Β Β Β
print
(
"\nAlong first axis : \n"
, arr2)
Β Β
Β
Β Β
Β
a
=
np.array([[
12
,
15
], [
10
,
1
]])
arr1
=
np.sort(a, axis
=
None
)Β Β Β Β Β Β Β Β
print
(
"\nAlong none axis : \n"
, arr1)
ΠΡΡ
ΠΎΠ΄:
Along first axis :
[[10 1]
[12 15]]
Along first axis :
[[10 15]
[ 1 12]]
Along none axis :
[ 1 10 12 15]
ΠΡΠΈΠΌΠ΅Ρ # 2: ΠΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ argsort ()
import
numpy as np
Β Β
Β
a
=
np.array([
9
,
3
,
1
,
7
,
4
,
3
,
6
])
Β Β
Β
print
(
'Original array:\n'
, a)
Β Β
Β
b
=
np.argsort(a)
print
(
'Sorted indices of original array->'
, b)
Β Β
Β
c
=
np.zeros(
len
(b), dtype
=
int
)
for
i
in
range
(
0
,
len
(b)):
Β Β Β Β
c[i]
=
a[b[i]]
print
(
'Sorted array->'
, c)
ΠΡΡ
ΠΎΠ΄:
Original array:
[9 3 1 7 4 3 6]
Sorted indices of original array-> [2 1 5 4 6 3 0]
Sorted array-> [1 3 3 4 6 7 9]
ΠΡΠΈΠΌΠ΅Ρ β 3: ΠΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ.
import
numpy as np
Β Β
Β
a
=
np.array([
9
,
3
,
1
,
3
,
4
,
3
,
6
])
Β Β
Β
b
=
np.array([
4
,
6
,
9
,
2
,
1
,
8
,
7
])Β
print
(
'column a, column b'
)
for
(i, j)
in
zip
(a, b):
Β Β Β Β
print
(i,
' '
, j)
Β Β
Β
ind
=
np.lexsort((b, a))Β
print
(
'Sorted indices->'
, ind)
ΠΡΡ
ΠΎΠ΄:
column a, column b
9 4
3 6
1 9
3 2
4 1
3 8
6 7
Sorted indices-> [2 3 1 5 4 6 0]
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΡΡΡ:
ΠΠ°ΠΊ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² Numpy | ΠΏΠΈΡΠΎΠ½
0.00 (0%) 0 votes
numpy.argsort () Π² Python - GeeksforGeeks
numpy.argsort () Π² Python
numpy.argsort ()
Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΎΡΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ kind . ΠΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΡΠΎΠΉ ΠΆΠ΅ ΡΠΎΡΠΌΡ, ΡΡΠΎ ΠΈ arr, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ².
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: numpy.argsort (arr, axis = -1, kind = βquicksortβ, order = None)
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
arr: [array_like] ΠΡ
ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ².
ΠΎΡΡ: [int ΠΈΠ»ΠΈ None] ΠΡΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°. ΠΡΠ»ΠΈ Π½Π΅Ρ, ΠΌΠ°ΡΡΠΈΠ² Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ - -1, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΎΡΠΈ.
kind: [Β«quicksortΒ», Β«mergesortΒ», Β«heapsortΒ»] ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π²ΡΠ±ΠΎΡΠ°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Β«Π±ΡΡΡΡΠ°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°Β».
order: [str or list of str] ΠΠΎΠ³Π΄Π° arr ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ, ΡΡΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ»Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅, Π²ΡΠΎΡΠΎΠ΅ ΠΈ Ρ. Π.
ΠΠΎΠ·Π²ΡΠ°Ρ: [index_array, ndarray] ΠΠ°ΡΡΠΈΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡΡΠΈΡΡΡΡ arr ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΎΡΠΈ.ΠΡΠ»ΠΈ arr ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ, ΡΠΎΠ³Π΄Π° arr [index_array] Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ arr.
ΠΠΎΠ΄ # 1:
import
numpy as geek
in_rayar6
,
0
,
1
,
5
,
4
,
1
,
9
]
Β«ΠΡ
ΠΎΠ΄Π½ΠΎΠΉ Π½Π΅ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²:Β»
, in_arr)
out_arr
=
geek.argsort (in_arr)
print
(
"ΠΠ½Π΄Π΅ΠΊΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π²ΡΠ²ΠΎΠ΄Π°:"
, out_arr)
print
(
"ΠΡΠ²ΠΎΠ΄ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°:"
, out_arr]
ΠΡΡ
ΠΎΠ΄:
ΠΡ
ΠΎΠ΄Π½ΠΎΠΉ Π½Π΅ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²: [2 0 1 5 4 1 9]
ΠΡΠ²Π΅ΡΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°: [1 2 5 0 4 3 6]
ΠΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²: [0 1 1 2 4 5 9]
ΠΠΎΠ΄ # 2:
import
numpy as geek
in_arr
= = = =ΠΌΠ°ΡΡΠΈΠ² ([[
2
,
0
,
1
], [
5
,
4
,
3
000]] ΠΏΠ΅ΡΠ°ΡΡ
(
"ΠΡ
ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²:"
, in_arr)
out_arr1
=
geek.argsort (in_arr, kind
=
000 =
000 '
0
)
print
(
"ΠΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎ ΠΎΡΠΈ 0:"
, out_arr1)
out_arr2
= geek. argsort (in_arr, kind
=
'heapsort'
, axis
=
1
)
print
(
"ΠΡΠ²ΠΎΠ΄ ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°
ΠΏΠΎ ΠΎΡΠΈ 1:" )
ΠΡΡ
ΠΎΠ΄:
ΠΡ
ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²: [[2 0 1]
[5 4 3]]
ΠΡΠ²Π΅ΡΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎ ΠΎΡΠΈ 0: [[0 0 0]
[1 1 1]]
ΠΡΠ²Π΅ΡΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎ ΠΎΡΠΈ 1: [[1 2 0]
[2 1 0]]
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡΠΈΠΊ! Π£ΠΊΡΠ΅ΠΏΠΈΡΠ΅ ΡΠ²ΠΎΠΈ ΠΎΡΠ½ΠΎΠ²Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΡΡΡΠ° Python Programming Foundation ΠΈ ΠΈΠ·ΡΡΠΈΡΠ΅ ΠΎΡΠ½ΠΎΠ²Ρ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΡΡΠ΅ΡΡ ΠΊ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. Π Π°ΡΡΠΈΡΡΡΠ΅ ΡΠ²ΠΎΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΡΡΡΠ° Python DS . Π ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΡΠ²ΠΎΠ΅ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΠ΅ ΠΏΠΎ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ ΠΊ ΠΠ°ΡΠΈΠ½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ - ΠΊΡΡΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ
python - Numpy argsort - ΡΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ?
[2, 3, 1, 0]
ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ 2, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ - ΠΈΠ½Π΄Π΅ΠΊΡ 3, Π·Π°ΡΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ 1, Π·Π°ΡΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ 0.
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
ΠΈΠΌΠΏΠΎΡΡ scipy.ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°
def using_indexed_assignment (x):
"https://stackoverflow.com/a/5284703/1 (Π‘Π²Π΅Π½ ΠΠ°ΡΠ½Π°Ρ
)"
ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ = np.empty (len (x), dtype = int)
temp = x.argsort ()
ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ [temp] = np.arange (len (x))
Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
def using_rankdata (x):
Π²Π΅ΡΠ½ΡΡΡ stats.rankdata (x) -1
def using_argsort_twice (x):
"https://stackoverflow.com/a/6266510/1 (k.rooijers)"
Π²Π΅ΡΠ½ΡΡΡ np.argsort (np.argsort (x))
def using_digitize (x):
ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅_Π²Π°Π»Π»Ρ, ΠΈΠ½Π΄Π΅ΠΊΡ = np.unique (x, return_inverse = True)
Π²Π΅ΡΠ½ΡΡΡ Π½ΠΏ.digitize (x, bins = unique_val) - 1
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
Π [72]: x = np.array ([1.48,1.41,0.0,0.1])
Π [73]: using_indexed_assignment (x)
ΠΡΡ
ΠΎΠ΄ [73]: ΠΌΠ°ΡΡΠΈΠ² ([3, 2, 0, 1])
ΠΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ Π΄Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
x = np.random.random (10 ** 5)
ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ = using_indexed_assignment (x)
Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π² (using_argsort_twice, using_digitize, using_rankdata):
ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ np.allclose (ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ, func (x))
ΠΡΠΈ ΡΠ΅ΡΡΡ IPython % timeit
ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² using_indexed_assignment
- ΡΠ°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ:
Π [50]: x = np.random.random (10 ** 5)
Π [66]:% timeit using_indexed_assignment (x)
100 ΡΠΈΠΊΠ»ΠΎΠ², Π»ΡΡΡΠ΅Π΅ ΠΈΠ· 3: 9,32 ΠΌΡ Π½Π° ΡΠΈΠΊΠ»
Π [70]:% timeit using_rankdata (x)
100 ΡΠΈΠΊΠ»ΠΎΠ², Π»ΡΡΡΠ΅Π΅ ΠΈΠ· 3: 10,6 ΠΌΡ Π½Π° ΡΠΈΠΊΠ»
Π [56]:% timeit using_argsort_twice (x)
100 ΡΠΈΠΊΠ»ΠΎΠ², Π»ΡΡΡΠ΅Π΅ ΠΈΠ· 3: 16,2 ΠΌΡ Π½Π° ΡΠΈΠΊΠ»
Π [59]:% timeit using_digitize (x)
10 ΡΠΈΠΊΠ»ΠΎΠ², Π»ΡΡΡΠ΅Π΅ ΠΈΠ· 3: 27 ΠΌΡ Π½Π° ΡΠΈΠΊΠ»
ΠΠ»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² using_argsort_twice
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΡΡΡΡΠ΅Π΅:
Π [78]: x = np.random.random (10 ** 2)
Π [81]:% timeit using_argsort_twice (x)
100000 ΠΏΠ΅ΡΠ΅Π»Ρ, Π»ΡΡΡΠ΅Π΅ ΠΈΠ· 3: 3.45 ΠΌΠΊΡ Π½Π° ΡΠΈΠΊΠ»
Π [79]:% timeit using_indexed_assignment (x)
100000 ΠΏΠ΅ΡΠ΅Π»Ρ, Π»ΡΡΡΠ΅Π΅ ΠΈΠ· 3: 4,78 ΠΌΠΊΡ Π½Π° ΠΏΠ΅ΡΠ»Ρ
Π [80]:% timeit using_rankdata (x)
100000 ΠΏΠ΅ΡΠ΅Π»Ρ, Π»ΡΡΡΠ΅Π΅ ΠΈΠ· 3: 19 ΠΌΠΊΡ Π½Π° ΠΏΠ΅ΡΠ»Ρ
Π [82]:% timeit using_digitize (x)
10000 ΠΏΠ΅ΡΠ΅Π»Ρ, Π»ΡΡΡΠ΅Π΅ ΠΈΠ· 3: 26,2 ΠΌΠΊΡ Π½Π° ΠΏΠ΅ΡΠ»Ρ
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ stats.rankdata
Π΄Π°Π΅Ρ Π²Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ°Π²Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
python - ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΠΏΠΎ ΡΠ±ΡΠ²Π°Π½ΠΈΡ?
ΠΡΠ»ΠΈ Π²Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΡΡΠ΅ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ², ΡΠ°ΠΌΡΠ΅ Π½ΠΈΠ·ΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΠ°ΠΌΡΠΌΠΈ Π²ΡΡΠΎΠΊΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΈΠ½Π΄Π΅ΠΊΡΡ n
Π²ΡΡΡΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π²Π½Ρ:
(-avgDists) .argsort () [: n]
ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°ΡΡΡΠΆΠ΄Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
, - ΡΡΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΡΠΈΠ±ΡΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π² argsort. ΠΡΠ°ΠΊ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΈΠ· Ρ
Π²ΠΎΡΡΠ° ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ n
ΡΠ°ΠΌΡΡ
Π²ΡΡΠΎΠΊΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
avgDists.argsort () [:: - 1] [: n]
ΠΠ±Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠΌΠ΅ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O (n log n) , ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ·ΠΎΠ² argsort
ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π΄Π΅ΡΡ Π΄ΠΎΠΌΠΈΠ½ΠΈΡΡΡΡΠΈΠΌ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠΌ.ΠΠΎ Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° Π΅ΡΡΡ ΠΏΡΠΈΡΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ: ΠΎΠ½ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° O (n) Π½Π° ΡΡΠ΅Π· O (1) . ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π²Π½ΡΡΡΠΈ ΡΠΈΠΊΠ»ΠΎΠ², Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΡΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΈΠ·Π±Π΅Π³Π°Ρ ΡΡΠΎΠ³ΠΎ ΠΎΡΡΠΈΡΠ°Π½ΠΈΡ, Π° Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠΏΠΈΡ Π²ΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π΄Π°ΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ: Π΅ΡΠ»ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π² argsort
, e.Π³ΡΠ°ΠΌΠΌ. ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° kind = 'mergesort'
, ΡΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠΎΡ
ΡΠ°Π½ΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π½ΠΎ Π²ΡΠΎΡΠ°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π½Π°ΡΡΡΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ (ΡΠΎ Π΅ΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ).
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠΌΠΈΠ½Π³Π°:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· 100 ΠΏΠΎΠΏΠ»Π°Π²ΠΊΠΎΠ² ΠΈ Ρ
Π²ΠΎΡΡΠΎΠ²ΡΡ ΡΠ°ΡΡΡ Π΄Π»ΠΈΠ½ΠΎΠΉ 30, ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π±ΡΠ» ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 15% Π±ΡΡΡΡΠ΅Π΅
>>> avgDists = np.random.rand (100)
>>> ΠΏ = 30
>>> timeit (-avgDists).argsort () [: n]
1,93 ΠΌΠΊΡ Β± 6,68 Π½Ρ Π½Π° ΡΠΈΠΊΠ» (ΡΡΠ΅Π΄Π½Π΅Π΅ Β± ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ· 7 ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ², ΠΏΠΎ 1000000 ΡΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ)
>>> timeit avgDists.argsort () [:: - 1] [: n]
1,64 ΠΌΠΊΡ Β± 3,39 Π½Ρ Π½Π° ΡΠΈΠΊΠ» (ΡΡΠ΅Π΄Π½Π΅Π΅ Β± ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ· 7 ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ², ΠΏΠΎ 1000000 ΡΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ)
>>> timeit avgDists.argsort () [- n:] [:: - 1]
1,64 ΠΌΠΊΡ Β± 3,66 Π½Ρ Π½Π° ΡΠΈΠΊΠ» (ΡΡΠ΅Π΄Π½Π΅Π΅ Β± ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ· 7 ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ², ΠΏΠΎ 1000000 ΡΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ)
ΠΠ»Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΡΠ΅ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΈ Π½Π΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
>>> avgDists = np.random.rand (1000)
>>> ΠΏ = 300
>>> timeit (-avgDists) .argsort () [: n]
21,9 ΠΌΠΊΡ Β± 51,2 Π½Ρ Π½Π° ΡΠΈΠΊΠ» (ΡΡΠ΅Π΄Π½Π΅Π΅ Β± ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ· 7 ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ², 10000 ΡΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ)
>>> timeit avgDists.argsort () [:: - 1] [: n]
21,7 ΠΌΠΊΡ Β± 33,3 Π½Ρ Π½Π° ΡΠΈΠΊΠ» (ΡΡΠ΅Π΄Π½Π΅Π΅ Β± ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ· 7 ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ², 10000 ΡΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ)
>>> timeit avgDists.argsort () [- n:] [:: - 1]
21,9 ΠΌΠΊΡ Β± 37,1 Π½Ρ Π½Π° ΡΠΈΠΊΠ» (ΡΡΠ΅Π΄Π½Π΅Π΅ Β± ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ· 7 ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ², 10000 ΡΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ)
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΎΡ nedim Π½ΠΈΠΆΠ΅ Π½Π΅Π²Π΅ΡΠ΅Π½. Π£ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ±Π΅ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ², Π° Π½Π΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΏΠΈΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅.
numpy.argsort () Π² Python - Javatpoint
ΠΠΎΠ΄ΡΠ»Ρ NumPy ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ argsort (), Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ².
ΠΠΎΠ΄ΡΠ»Ρ NumPy ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΎΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΡΠΎΠΉ ΠΆΠ΅ ΡΠΎΡΠΌΡ, ΡΡΠΎ ΠΈ 'a', ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡΡΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ².
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΡΡΠΏΠΎΠΉ.argsort (a, axis = -1, kind = None, order = None)
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
ΠΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ numpy.argsort ():
a: array_like
ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ.
ΠΎΡΡ: int ΠΈΠ»ΠΈ None (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ)
ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΡΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΡΡ -1. ΠΡΠ»ΠΈ ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ None, Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠ»ΠΎΡΠΊΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ².
kind: {'quicksort', 'mergesort', 'heapsort', 'stable'} (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ)
ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ quicksort . Π mergesort , ΠΈ stable ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ½ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ
. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ mergesort ΡΠΎΡ
ΡΠ°Π½Π΅Π½ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ.
Π·Π°ΠΊΠ°Π·: str ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ str (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ)
ΠΡΠ»ΠΈ 'a' - ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ, ΡΡΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ»Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ, Π²ΡΠΎΡΡΠΌ ΠΈ Ρ. Π.ΠΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΡ, ΠΈ Π½Π΅ Π²ΡΠ΅ ΠΏΠΎΠ»Ρ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ. ΠΠΎ Π½Π΅ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π² dtype, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΠΎΡΠ²Π°ΡΡ ΡΠ²ΡΠ·ΠΈ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ: index_array: ndarray, int
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡΡΠΈΡΡΡΡ Β«Π°Β» Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΎΡΡΡ. ΠΡΠ»ΠΈ 'a' 1-D, [index_array] Π΄Π°Π΅Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ 'a'. Π Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΌ ΡΠΌΡΡΠ»Π΅ np.take_along_axis (arr1, index_array, axis = axis) Π²ΡΠ΅Π³Π΄Π° Π΄Π°Π΅Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Β«aΒ», Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠΈΠΌΠ΅Ρ 1: np.argsort ()
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
a = np.array ([456,11,63])
Π°
b = np.argsort (Π°)
Π±
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅
- ΠΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ numpy Ρ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠΌ np.
- ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΌΠ°ΡΡΠΈΠ² 'a' Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ np.array ().
- ΠΡ ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ 'b' ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ np.argsort ().
- ΠΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ² 'a'.
- ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΠΏΠΎΠΏΡΡΠ°Π»ΠΈΡΡ Π²ΡΠ²Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ b.
Π Π²ΡΠ²ΠΎΠ΄Π΅ Π±ΡΠ» ΠΏΠΎΠΊΠ°Π·Π°Π½ ndarray, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡΡ (ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°) ΠΈ dtype.
ΠΡΡ
ΠΎΠ΄:
ΠΌΠ°ΡΡΠΈΠ² ([456, 11, 63])
ΠΌΠ°ΡΡΠΈΠ² ([1, 2, 0], dtype = int64)
ΠΡΠΈΠΌΠ΅Ρ 2: ΠΠ»Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° (ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΎΡΠΈ (Π²Π½ΠΈΠ·))
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
a = np.array ([[0, 5], [3, 2]])
ΠΈΠ½Π΄Π΅ΠΊΡΡ = np.argsort (a, ΠΎΡΡ = 0)
ΠΈΠ½Π΄Π΅ΠΊΡΡ
ΠΡΡ
ΠΎΠ΄:
ΠΌΠ°ΡΡΠΈΠ² ([[0, 1],
[1, 0]], dtype = int64)
ΠΡΠΈΠΌΠ΅Ρ 3: ΠΠ»Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° (Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΠΎΡΠΈ = 0)
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
a = np.array ([[0, 5], [3, 2]])
ΠΈΠ½Π΄Π΅ΠΊΡΡ = np.argsort (a, ΠΎΡΡ = 0)
ΠΈΠ½Π΄Π΅ΠΊΡΡ
np.take_along_axis (a, ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΠΎΡΡ = 0)
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅
- ΠΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ numpy Ρ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠΌ np.
- ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Β«aΒ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ np.array ().
- ΠΡ ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ np.argsort ().
- ΠΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² 'a' ΠΈ ΠΎΡΡ ΠΊΠ°ΠΊ 0.
- ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ take_along_axis () ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΈ ΠΎΡΡ.
- ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²Π΅ΡΠ½ΡΠ»Π° ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ².
ΠΠ° Π²ΡΡ
ΠΎΠ΄Π΅ Π±ΡΠ» ΠΏΠΎΠΊΠ°Π·Π°Π½ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
ΠΡΡ
ΠΎΠ΄:
ΠΡΠΈΠΌΠ΅Ρ 4: ΠΠ»Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° (ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΎΡΠΈ (ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ))
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
a = np.array ([[0, 5], [3, 2]])
ΠΈΠ½Π΄Π΅ΠΊΡΡ = np.argsort (a, ΠΎΡΡ = 1)
ΠΈΠ½Π΄Π΅ΠΊΡΡ
ΠΡΡ
ΠΎΠ΄:
ΠΌΠ°ΡΡΠΈΠ² ([[0, 1],
[1, 0]], dtype = int64)
ΠΡΠΈΠΌΠ΅Ρ 5: ΠΠ»Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° (Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΠΎΡΠΈ = 1)
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
Π° = Π½ΠΏ.ΠΌΠ°ΡΡΠΈΠ² ([[0, 5], [3, 2]])
ΠΈΠ½Π΄Π΅ΠΊΡΡ = np.argsort (a, ΠΎΡΡ = 1)
ΠΈΠ½Π΄Π΅ΠΊΡΡ
np.take_along_axis (a, ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΠΎΡΡ = 1)
ΠΡΡ
ΠΎΠ΄:
ΠΡΠΈΠΌΠ΅Ρ 6: ΠΠ»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° N-D
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
a = np.array ([[0, 5], [3, 2]])
ΠΈΠ½Π΄Π΅ΠΊΡΡ = np.unravel_index (np.argsort (a, axis = None), a.shape)
ΠΈΠ½Π΄Π΅ΠΊΡΡ
a [ΠΈΠ½Π΄Π΅ΠΊΡΡ] # ΡΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ np.sort (a, axis = None)
ΠΡΡ
ΠΎΠ΄:
(ΠΌΠ°ΡΡΠΈΠ² ([0, 1, 1, 0], dtype = int64), array ([0, 1, 0, 1], dtype = int64))
ΠΌΠ°ΡΡΠΈΠ² ([0, 2, 3, 5])
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅
- ΠΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ numpy Ρ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠΌ np.
- ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Β«aΒ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ np.array ().
- ΠΡ ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ index ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ np.unravel_index ().
- ΠΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ np.argsort () ΠΈ ΡΠΎΡΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Π° 'a'.
- ΠΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² 'a' ΠΈ ΠΎΡΡ ΠΊΠ°ΠΊ 1 Π² ΡΡΠ½ΠΊΡΠΈΠΈ argsort ().
- ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΏΠΎΠΏΡΡΠ°Π»ΠΈΡΡ Π²ΡΠ²Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΈ [ΠΈΠ½Π΄Π΅ΠΊΡΡ].
ΠΠ° Π²ΡΡ
ΠΎΠ΄Π΅ Π±ΡΠ» ΠΏΠΎΠΊΠ°Π·Π°Π½ N-D ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
ΠΡΠΈΠΌΠ΅Ρ 7: Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
a = np.array ([(0, 5), (3, 2)], dtype = [('x', ' ΠΡΡ
ΠΎΠ΄:
array ([(0, 5), (3, 2)], dtype = [('x', ' Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅
- ΠΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ numpy Ρ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠΌ np.
- ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² 'a' Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ np.array () Ρ dtype = [('x', '
- ΠΡ ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ 'b' ΠΈ 'c' ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ np.argsort ().
- ΠΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ² 'a' ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.
- ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΠΏΠΎΠΏΡΡΠ°Π»ΠΈΡΡ Π²ΡΠ²Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«bΒ» ΠΈ Β«cΒ».
Π Π²ΡΠ²ΠΎΠ΄Π΅ Π±ΡΠ» ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Ρ dtype = [('x', '
Python NumPy Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ Π±Π°Π±ΡΡΠΊΠΈ - 4.6 Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ NumPy sort ()
Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°.
sort ()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°:
- ΠΌΠ°ΡΡΠΈΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ
- ΠΎΡΡ Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ - ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ -1, ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΎΡΠΈ
- , ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² NumPy. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ NumPy ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π±ΡΡΡΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π΄Π΅ΡΡ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ 1d-ΠΌΠ°ΡΡΠΈΠ², foo
, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΎΡΡΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ.
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
foo = np.array ([1, 7, 3, 9, 0, 9, 1])
np.sort (foo)
## ΠΌΠ°ΡΡΠΈΠ² ([0, 1, 1, 3, 7, 9, 9])
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΎΡΡΠ°Π΅ΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
ΠΏΠ΅ΡΠ°ΡΡ (foo)
## [1 7 3 9 0 9 1]
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ foo
Β«Π½Π° ΠΌΠ΅ΡΡΠ΅Β», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ .sort ()
ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ foo.sort ()
, Π½Π° ΡΡΠΎΡ ΡΠ°Π· foo
ΠΎΠ±Π½ΠΎΠ²ΠΈΡ ΡΠ²ΠΎΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
foo.sort ()
ΠΏΠ΅ΡΠ°ΡΡ (foo)
## [0 1 1 3 7 9 9]
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² Ρ Π½Π°Π½
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
ΡΡΠΎΠΌΡ, sort ()
ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΠΈΡ
Π² ΠΊΠΎΠ½Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°.
bar = np.array ([5, np.nan, 3, 11])
np.sort (Π±Π°Ρ)
## ΠΌΠ°ΡΡΠΈΠ² ([3., 5., 11., nan])
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π² NumPy Π½Π΅Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΈ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ±ΡΠ²Π°Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°Π², ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ. ΠΡΠΎΠ±ΠΎ Π²ΡΠ΄Π΅Π»ΡΡΡΡΡ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π°.
ΠΠ΅ΡΠ²ΡΠΉ - ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
np.sort (bar) [:: - 1]
## array ([nan, 11., 5., 3.])
ΠΡΠΎΡΠΎΠΉ - ΠΎΡΡΠΈΡΠ°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈΡ
Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
-np.sort (-bar)
## ΠΌΠ°ΡΡΠΈΠ² ([11., 5., 3., nan])
ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ 1-ΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅Ρ Π½Π°Π½
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½ ΠΌΠ°ΡΡΠΈΠ²Π°, Π° Π²ΡΠΎΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ Π½Π°Π½
Ρ Π½Π° Π·Π°Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½.ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²ΡΠΎΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΡΠΈΡΠ°ΡΡ ΡΡΡΠΎΠΊΡ.
Π§ΡΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π²ΠΎΡ ΡΠ°ΠΊ?
boo = np.array ([
[55, 10, 12],
[20, 0, 33],
[55, 92, 3]
])
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ axis
ΡΡΠ½ΠΊΡΠΈΠΈ sort ()
, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ ΠΎΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ np.sort (boo, axis = 0)
, ΠΎΠ½ ΡΠΎΡΡΠΈΡΡΠ΅Ρ boo
ΠΏΠΎ ΠΎΡΠΈ 0.ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΎΠ½ ΡΠΎΡΡΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ boo
.
np.sort (boo, axis = 0)
## ΠΌΠ°ΡΡΠΈΠ² ([[20, 0, 3],
## [55, 10, 12],
## [55, 92, 33]])
Π Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ np.sort (boo, axis = 1)
, ΠΎΠ½ ΡΠΎΡΡΠΈΡΡΠ΅Ρ boo
ΠΏΠΎ ΠΎΡΠΈ 1. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΎΠ½ ΡΠΎΡΡΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΡΠΎΠΊΡ ΠΈΠ· boo
.
np.sort (boo, axis = 1)
## ΠΌΠ°ΡΡΠΈΠ² ([[10, 12, 55],
## [0, 20, 33],
## [3, 55, 92]])
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ axis = -1
, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ NumPy, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΎΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°.Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ boo
ΠΏΠΎ ΠΎΡΠΈ 1.
np.sort (a = boo, axis = -1)
## ΠΌΠ°ΡΡΠΈΠ² ([[10, 12, 55],
## [0, 20, 33],
## [3, 55, 92]])
ΠΡΡΡΠΎ, Π½ΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ Ρ
ΠΎΡΠ΅Π»ΠΈ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ boo
Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² 1-ΠΌ ΡΡΠΎΠ»Π±ΡΠ΅? ΠΡΠ»ΠΈ Π±Ρ Ρ Π½Π°Ρ Π±ΡΠ»ΠΎ ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ Π΄Π°ΡΡ Π½Π°ΠΌ ΠΌΠ°ΡΡΠΈΠ² [1, 0, 2]
, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ Π² ΠΈΠ½Π΄Π΅ΠΊΡ ΡΡΡΠΎΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ².
Π±Ρ [[1, 0, 2]]
## ΠΌΠ°ΡΡΠΈΠ² ([[20, 0, 33],
## [55, 10, 12],
## [55, 92, 3]])
ΠΠ°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ argsort ()
. argsort ()
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ sort ()
, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² , ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΡ
ΠΏΠΎΠ·ΠΈΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² [3, 0, 10, 5]
ΠΈ Π²Ρ Π²ΡΠ·Π²Π°Π»ΠΈ Π΄Π»Ρ Π½Π΅Π³ΠΎ argsort ()
, Π²Ρ Π²Π΅ΡΠ½Π΅ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² [1, 0, 3, 2]
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ 1, Π²ΡΠΎΡΠΎΠΉ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ 0 ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΠ»ΠΈ Π±Ρ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ² Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, Π²Ρ Π±Ρ Π²Π΅ΡΠ½ΡΠ»ΠΈ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ Π²Ρ Π²ΡΠ·Π²Π°Π»ΠΈ np.Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ()
.
goo = np.array ([3, 0, 10, 5]) # [3, 0, 10, 5]
np.argsort (goo) # [1, 0, 3, 2]
## ΠΌΠ°ΡΡΠΈΠ² ([1, 0, 3, 2])
goo [np.argsort (goo)] # [0, 3, 5 10]
## ΠΌΠ°ΡΡΠΈΠ² ([0, 3, 5, 10])
ΠΡΠ°ΠΊ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ Π΄Π²ΡΡ
ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°, Π²Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ argsort ()
Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΡΡΠΎΠΊ ΠΈΠ· ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠ³Π»ΡΠ΄ΡΠ²Π°ΡΡΡ Π½Π° Π½Π°Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² boo
, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎ 1-ΠΌΡ ΡΡΠΎΠ»Π±ΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ.
Π±Ρ [np.argsort (boo [:, 0])]
## ΠΌΠ°ΡΡΠΈΠ² ([[20, 0, 33],
## [55, 10, 12],
## [55, 92, 3]])
ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²Π°ΠΆΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ. ΠΡΠ»ΠΈ Π² Π½Π°ΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ Π΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 55 Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΈΡ
ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±Π΅ ΡΡΠΈ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ²Π»ΡΡΡΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ boo
ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π½Π΅ ΡΠΌΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΡΠ΄ΠΎΠΊ 55.
ΠΏΠ΅ΡΠ°ΡΡ (Π±Ρ [[1, 0, 2]])
## [[20 0 33]
## [55 10 12]
## [55 92 3]]
ΠΏΠ΅ΡΠ°ΡΡ (Π±Ρ [[1, 2, 0]])
## [[20 0 33]
## [55 92 3]
## [55 10 12]]
ΠΡΠΎ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ .ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ np.sort ()
ΠΈ np.argsort
Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² kind = ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ
.
Π£ΡΠ΅Π±Π½ΡΠΉ ΠΏΠ»Π°Π½ ΠΊΡΡΡΠ°
- ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
1.1 ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ - ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π°
2.1 ΠΠΎΡΠΈΠ²Π°ΡΠΈΡ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° NumPy
2.2 ΠΡΠ½ΠΎΠ²Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ NumPy
2.3 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² NumPy
2.4 ΠΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
2.5 ΠΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
2.6 ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
2.ΠΡΠ·ΠΎΠ² 7: Π²ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄Π½Π΅ΠΉ ΡΠΊΠΎΠ»Ρ
2.8 ΠΡΠ·ΠΎΠ²: Π·ΠΎΠ»ΠΎΡΠΎΠΈΡΠΊΠ°ΡΠ΅Π»Ρ
2.9 ΠΡΠ·ΠΎΠ²: Chic-fil-A - Intermediate Array Stuff
3.1 Broadcasting
3.2 newaxis
3.3 reshape ()
3.4 ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
3.5 nan
3.6 infinity
3.7 random
3.8 Challenge: Love Distance
3.9 Challenge: Professor Prick
3.10 Challenge: Psycho Parent - ΠΠ±ΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
4.1 Π³Π΄Π΅ ()
4.2 ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
4.3 Π²ΡΠ΅ ()
ΠΈ Π»ΡΠ±ΡΠ΅ ()
4,4 concatenate ()
4,5 Π‘ΡΠ΅ΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
4,6 Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°
4,7 ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
()
4,8 ΠΠ°Π΄Π°ΡΠ°: ΡΠ΅ΠΉΡΠΈΠ½Π³ ΡΠΈΠ»ΡΠΌΠΎΠ²
4,9 ΠΠ°Π΄Π°ΡΠ°: Big Fish
4,10 ΠΠ°Π΄Π°ΡΠ°: Taco Truck - Advanced Array Stuff
5.1 Advanced Array Indexing
5.2 View vs Copy
5.3 Challenge: Population Verification
5.4 Challenge: Prime Locations
5.5 Challenge: The Game of Doors
5.6 Challenge: Peanut Butter - Π€ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Π±ΠΎΡΡ
6.1 as_strided ()
6.2 einsum ()
6.3 ΠΠ°Π΄Π°ΡΠ°: One-Hot-Encoding
6.4 ΠΠ°Π΄Π°ΡΠ°: Π‘ΡΠΌΠΌΠ°ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠ°Π΄ΠΊΠΎΠ²
6.5 ΠΠ°Π΄Π°ΡΠ°: ΠΠ°ΡΡΠΎΠ»ΡΠ½ΡΠΉ ΡΠ΅Π½Π½ΠΈΡ
6.6 ΠΠ°Π΄Π°ΡΠ°: ΠΠ΄Π΅ Π£ΠΎΠ»Π΄ΠΎ
6.7 ΠΠ°Π΄Π°ΡΠ°: ΠΠ½Π΅ΡΠ½ΠΈΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ
3 ΠΏΡΠΎΡΡΡΡ
ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π² NumPy
ΠΡΠΈΠ²Π΅Ρ, ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ! Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π°Ρ
ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ 3 Π² NumPy .
ΠΡΠ°ΠΊ, ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ! π
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Python NumPy ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π°ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π² ΡΡΡΡΠΊΡΡΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°.ΠΠ°ΡΡΠ΄Ρ Ρ ΡΡΠΈΠΌ NumPy ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π°ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π½Π°ΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ Π² ΡΡΡΡΠΊΡΡΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠ΅ΡΠΎΠ΄Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π² NumPy
ΠΡ ΠΈΠ·ΡΡΠΈΠΌ Π½ΠΈΠΆΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π² NumPy.
- Π€ΡΠ½ΠΊΡΠΈΡ NumPy sort ()
- Π€ΡΠ½ΠΊΡΠΈΡ NumPy argsort ()
- Π€ΡΠ½ΠΊΡΠΈΡ NumPy lexsort ()
ΠΡΠ°ΠΊ, ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ!
1. Π€ΡΠ½ΠΊΡΠΈΡ NumPy sort ()
ΠΠ»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΡ
Π² ΡΡΡΡΠΊΡΡΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°, NumPy ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΠΌ ΡΡΠ½ΠΊΡΠΈΡ sort () .Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ sort () ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΈΡ
Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΠΈ ΡΠ±ΡΠ²Π°Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½ΠΈΠΆΠ΅!
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«ΠΎΡΡΒ» ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΏΠΎΡΠΎΠ±, ΠΊΠΎΡΠΎΡΡΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°. ΠΠΎΡΡΠΎΠΌΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ axis = NONE, ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ axis = 1, ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ, ΡΠΎ Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎ.
ΠΡΠΈΠΌΠ΅Ρ 1:
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΌΠ°ΡΡΠΈΠ², Π΄Π°Π»Π΅Π΅ ΠΌΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ sort () ΠΈ Ρ ΠΎΡΡΡ = NONE , Ρ.Π΅. ΠΎΠ½ ΡΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ.
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
data = np.array ([[22, 55], [0, 10]])
res = np.sort (Π΄Π°Π½Π½ΡΠ΅, ΠΎΡΡ = ΠΠ΅Ρ)
print ("ΠΠ°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ:", data)
print ("ΠΠ°Π½Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ:", res)
ΠΡΡ
ΠΎΠ΄:
ΠΠ°Π½Π½ΡΠ΅ Π΄ΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ: [[22 55]
[0 10]]
ΠΠ°Π½Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ: [0 10 22 55]
ΠΡΠΈΠΌΠ΅Ρ 2:
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΠΈ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ sort (), Π·Π΄Π΅ΡΡ ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ axis = 1 i.Π΅. ΠΡΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΠΎΡΡΡΠΎΡΠ½Π°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°.
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
data = np.array ([[66, 55, 22], [0, 10, -1]])
res = np.sort (Π΄Π°Π½Π½ΡΠ΅, ΠΎΡΡ = 1)
print ("ΠΠ°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ:", data)
print ("Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ:", res)
ΠΡΡ
ΠΎΠ΄:
ΠΠ°Π½Π½ΡΠ΅ Π΄ΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ: [[66 55 22]
[0 10 -1]]
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ: [[22 55 66]
[-1 0 10]]
2. NumPy argsort ()
ΠΠΎΠΌΠΈΠΌΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° sort (), Ρ Π½Π°Ρ ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ argsort () , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π² NumPy, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².ΠΠ· ΡΡΠΈΡ
ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ argsort () ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ, ΡΡΠΎ ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ².
ΠΡΠΈΠΌΠ΅Ρ:
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
data = np.array ([66, 55, 22,11, -1,0,10])
res_index = np.argsort (Π΄Π°Π½Π½ΡΠ΅)
print ("ΠΠ°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ:", data)
print ("ΠΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°:", res_index)
x = np.zeros (len (res_index), dtype = int)
Π΄Π»Ρ i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (0, len (x)):
x [i] = Π΄Π°Π½Π½ΡΠ΅ [res_index [i]]
print ('ΠΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²:', x)
ΠΡΠ²ΠΎΠ΄:
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ argsort () Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΡΡ
ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ΅ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠ°Π½Π½ΡΠ΅ Π΄ΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ: [66 55 22 11 -1 0 10]
ΠΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°: [4 5 6 3 2 1 0]
ΠΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌ: [-1 0 10 11 22 55 66]
3. Π€ΡΠ½ΠΊΡΠΈΡ lexsort () NumPy
Π€ΡΠ½ΠΊΡΠΈΡ lexsort () ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ, ΡΠΎ Π΅ΡΡΡ ΠΏΠΎ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ lexsort () ΠΌΡ ΡΠΎΡΡΠΈΡΡΠ΅ΠΌ Π΄Π²Π° ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Ρ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ.Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
data = np.array ([66, 55, 22,11, -1,0,10])
data1 = np.array ([1,2,3,4,5,0, -1])
res_index = np.lexsort ((Π΄Π°Π½Π½ΡΠ΅1, Π΄Π°Π½Π½ΡΠ΅))
print ("ΠΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°:", res_index)
ΠΡΡ
ΠΎΠ΄:
ΠΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°: [4 5 6 3 2 1 0]
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΈΠΆΠ΅, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π²ΠΎΠΏΡΠΎΡΡ. Π§ΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°ΠΊΠΈΡ
ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° Python, ΠΎΡΡΠ°Π²Π°ΠΉΡΠ΅ΡΡ Ρ Π½Π°ΠΌΠΈ.
ΠΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΡΠ΄Π°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ !!
ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π² NumPy
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΊΠ½ΠΈΠ³Ρ Π½Π° ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠ½ΠΈΠΆΠ½ΠΎΠΉ ΠΏΠΎΠ»ΠΊΠ΅. ΠΠ°ΠΊΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Π²Ρ Π±Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ»ΠΈ: A) Π²Π°ΡΠ° ΠΊΠ½ΠΈΠΆΠ½Π°Ρ ΠΏΠΎΠ»ΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ Π²Π°ΡΠΈ ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΠΈΠ»ΠΈ B) Π²Π°ΡΠ° ΠΊΠ½ΠΈΠΆΠ½Π°Ρ ΠΏΠΎΠ»ΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π² Π°Π»ΡΠ°Π²ΠΈΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Π°ΡΠΈΠ°Π½Ρ Π) ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΠ΅ΡΡ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠ½ΠΈΠΆΠ½ΠΎΠΉ ΠΏΠΎΠ»ΠΊΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·. ΠΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ NumPy.Π‘ΡΠ°ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° Π³Π»Π°Π²Π°Ρ
ΠΈΠ· ΠΌΠΎΠ΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Β«Coffee Break NumPyΒ» ΠΈ ΠΌΠΎΠ΅ΠΉ Π±ΡΠ΄ΡΡΠ΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Β«Python One-linersΒ». π
ΠΡΠ½ΠΎΠ²Ρ
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π»Π΅ΠΆΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΎΠ±Ρ
ΠΎΠ΄ Π³ΡΠ°ΡΠΎΠ² ΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΏΠΎΠΈΡΠΊΠ°. Π ΡΡΠ°ΡΡΡΡ, NumPy ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΏΠΎΠΈΡΠΊΠ° - Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ Β«ΠΡΡΡΡΠ°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°Β». ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΠ°ΠΊ Β«ΡΠ΅ΡΠ½ΡΠΉ ΡΡΠΈΠΊΒ», ΠΊΡΠ΄Π° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ² NumPy ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² NumPy.
Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π½Π΅ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² [10, 6, 8, 2, 5, 4,
9, 1] Π² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² [1, 2, 4, 5, 6, 8, 9, 10]. ΠΡΠΎ ΡΠ΅Π»Ρ
Π€ΡΠ½ΠΊΡΠΈΡ sort () Π² NumPy.
ΠΠΎ
Π·Π°ΡΠ°ΡΡΡΡ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ², Π½ΠΎ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ
ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π½Π΅ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ
ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Β«1Β» Π½Π΅ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ Β«7Β». Π‘
ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Β«1Β» - ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, Π΅Π³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ Β«7Β»
- ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ².ΠΡΠΎ ΡΠ΅Π»Ρ argsort () Π² NumPy.
ΡΡΠ½ΠΊΡΠΈΡ.
ΠΡΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ sort () ΠΈ argsort () Π² NumPy:
import numpy as np
a = np.array ([10, 6, 8, 2, 5, 4, 9, 1])
ΠΏΠ΅ΡΠ°ΡΡ (np.sort (a))
# [1 2 4 5 6 8 9 10]
ΠΏΠ΅ΡΠ°ΡΡ (np.argsort (a))
# [7 3 5 4 1 2 6 0]
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠΎΡΠΈΡΡ: ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ sort () Π² NumPy ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ sorted () Π² Python? ΠΡΠ²Π΅Ρ ΠΏΡΠΎΡΡ: Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ NumPy Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²!
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.Π‘ΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π΅ ΠΎΡΠΈ: ΠΎΡΡ 0 (ΡΡΡΠΎΠΊΠΈ) ΠΈ ΠΎΡΡ 1 (ΡΡΠΎΠ»Π±ΡΡ). Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΠΏΠΎ ΠΎΡΠΈ 0 (ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ) ΠΈΠ»ΠΈ ΠΏΠΎ ΠΎΡΠΈ 1 (ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ). Π ΠΎΠ±ΡΠ΅ΠΌ, ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ axis ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ NumPy. ΠΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ:
import numpy as np
a = np.array ([[1, 6, 2],
[5, 1, 1],
[8, 0, 1]])
print (np.sort (a, ΠΎΡΡ = 0))
"" "
[[1 0 1]
[5 1 1]
[8 6 2]]
"" "
ΠΏΠ΅ΡΠ°ΡΡ (Π½ΠΏ.sort (a, axis = 1))
"" "
[[1 2 6]
[1 1 5]
[0 1 8]]
"" "
ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΎΡΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π²Π°ΠΌ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² NumPy
ΠΏΠΎ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠΈΠ»Π° ΡΡΠ½ΠΊΡΠΈΠΈ sort () NumPy ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ
ΠΊ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Python sorted ().
ΠΠΎΠ΄
ΠΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ΅ΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ Π·Π°Π΄Π°ΡΡ: Β«ΠΠ°ΠΉΡΠΈ ΠΈΠΌΠ΅Π½Π° ΡΡΠ΅Ρ
Π»ΡΡΡΠΈΡ
ΡΡΠ°ΡΠΈΡ
ΡΡ Ρ Π½Π°ΠΈΠ²ΡΡΡΠΈΠΌΠΈ Π±Π°Π»Π»Π°ΠΌΠΈ ΠΏΠΎ SATΒ». ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² SAT Π½Π΅ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² Π·Π°Π΄Π°ΡΠ΅ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΠΈΠΌΠ΅Π½Π° ΡΡΠ°ΡΠΈΡ
ΡΡ.Π‘Π½Π°ΡΠ°Π»Π° ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
## ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np
## ΠΠ°Π½Π½ΡΠ΅: ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ SAT Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΡΡΡΠ΄Π΅Π½ΡΠΎΠ²
sat_scores = np.array ([1100, 1256, 1543, 1043, 989, 1412, 1343])
student = np.array ([Β«ΠΠΆΠΎΠ½Β», Β«ΠΠΎΠ±Β», Β«ΠΠ»ΠΈΡΠ°Β», Β«ΠΠΆΠΎΒ», Β«ΠΠΆΠ΅ΠΉΠ½Β», Β«Π€ΡΡΠ½ΠΊΒ», Β«ΠΠ°ΡΠ»Β»])
## ΠΠ΄ΠΈΠ½ Π»Π°ΠΉΠ½Π΅Ρ
top_3 = ΡΡΡΠ΄Π΅Π½ΡΡ [np.argsort (sat_scores)] [: 3: -1]
## Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
ΠΏΠ΅ΡΠ°ΡΡ (top_3)
Π§ΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°?
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΊΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅
ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² SAT ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄Π°Π½Π½ΡΡ
, ΠΊΠ°ΠΊ
Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΡΠΈΡ
ΡΡΡΠ΄Π΅Π½ΡΠΎΠ².ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ΅Π½ΠΈΠΊ Β«ΠΠΆΠΎΠ½Β» ΡΠ΄Π°Π» SAT.
ΠΎΡΠ΅Π½ΠΊΠ° Β«1100Β», Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Β«Π€ΡΠ°Π½ΠΊΒ» ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΎΡΠ΅Π½ΠΊΡ SAT Β«1343Β».
ΠΠΎΠΏΡΠΎΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΈΠΌΠ΅Π½Π°
ΡΡΠΎΠ΅ ΡΠ°ΠΌΡΡ
ΡΡΠΏΠ΅ΡΠ½ΡΡ
ΡΡΡΠ΄Π΅Π½ΡΠΎΠ². ΠΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΠΈΠΊ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ - Π½Π΅ Π·Π° ΡΡΠ΅Ρ
ΠΏΡΠΎΡΡΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² SAT - Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ argsort (). ΠΡΠ·ΡΠ²Π°ΡΡ
ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ argsort () Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΡΠ°ΠΊΠΎΠΉ ΡΡΠΎ
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄Π°Π½Π½ΡΡ
Π±ΡΠ΄ΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ.
ΠΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ argsort ΠΎΡΠ΅Π½ΠΎΠΊ SAT:
print (np.argsort (sat_scores))
# [4 3 0 1 6 5 2]
ΠΠΎΡΠ΅ΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡ Β«4Β» ΡΡΠΎΠΈΡ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ
ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΡ
ΠΎΠ΄Π°? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΡΡΡΠ΄Π΅Π½ΡΠΊΠΈ Β«ΠΠΆΠ΅ΠΉΠ½Β» ΡΠ°ΠΌΡΠΉ Π½ΠΈΠ·ΠΊΠΈΠΉ Π±Π°Π»Π» ΠΏΠΎ SAT - 989
ΡΠΎΡΠΊΠΈ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΊΠ°ΠΊ sort (), ΡΠ°ΠΊ ΠΈ argsort () ΡΠΎΡΡΠΈΡΡΡΡΡΡ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΠΎΡ
ΠΎΡ ΡΠ°ΠΌΡΡ
Π½ΠΈΠ·ΠΊΠΈΡ
Π΄ΠΎ ΡΠ°ΠΌΡΡ
Π²ΡΡΠΎΠΊΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
Π£ Π²Π°Ρ Π΅ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ, Π½ΠΎ ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ? ΠΠ΄Π΅Ρ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΡΡΡΠ΄Π΅Π½ΡΠΎΠ². Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΡΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈΠΌΠ΅Π½ ΡΡΠ°ΡΠΈΡ
ΡΡ:
print (student [np.argsort (sat_scores)])
# ['ΠΠΆΠ΅ΠΉΠ½' ΠΠΆΠΎ 'ΠΠΆΠΎΠ½' ΠΠΎΠ± 'ΠΠ°ΡΠ»' Π€ΡΡΠ½ΠΊ 'ΠΠ»ΠΈΡΠ°']
ΠΡ ΡΠΆΠ΅ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ Ρ Β«ΠΠΆΠ΅ΠΉΠ½Β» ΡΠ°ΠΌΡΠΉ Π½ΠΈΠ·ΠΊΠΈΠΉ Π±Π°Π»Π» Π·Π° SAT, Π° Ρ Β«ΠΠ»ΠΈΡΡΒ» ΡΠ°ΠΌΡΠΉ Π²ΡΡΠΎΠΊΠΈΠΉ Π±Π°Π»Π» Π·Π° SAT.ΠΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΡΡ ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ (ΠΎΡ ΡΠ°ΠΌΠΎΠ³ΠΎ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ Π΄ΠΎ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ) ΠΈ ΠΈΠ·Π²Π»Π΅ΡΡ ΡΡΠ΅Ρ
Π»ΡΡΡΠΈΡ
ΡΡΠ΅Π½ΠΈΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΡΡΡΡ ΡΡΠ΅Π·ΠΊΡ:
## ΠΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΡΠΉ
top_3 = ΡΡΡΠ΄Π΅Π½ΡΡ [np.argsort (sat_scores)] [: 3: -1]
## Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
ΠΏΠ΅ΡΠ°ΡΡ (top_3)
# ['Alice' 'Frank' 'Carl']
ΠΠ»ΠΈΡΠ°, Π€ΡΡΠ½ΠΊ ΠΈ ΠΠ°ΡΠ» - ΡΡΡΠ΄Π΅Π½ΡΡ Ρ Π½Π°ΠΈΠ²ΡΡΡΠΈΠΌΠΈ Π±Π°Π»Π»Π°ΠΌΠΈ SAT 1543, 1412 ΠΈ 1343 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ Π΄Π°Π»ΡΡΠ΅?
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ ΡΡΠ°ΡΡ Π»ΡΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ (ΠΈ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅ΡΡ ΡΠ²ΠΎΠ΅ ΡΠ»Π°Π±ΠΎΠ΅ Β«ΡΒ»), Ρ ΡΠΎΠ·Π΄Π°Π» ΡΠ²ΠΎΠΉ ΠΊΡΡΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Python.ΠΠΎΠΈ ΠΊΠ½ΠΈΠ³ΠΈ Β«Python Π΄Π»Ρ ΠΊΠΎΡΠ΅-Π±ΡΠ΅ΠΉΠΊΠΎΠ²Β» ΠΈ Β«Coffee Break NumPyΒ» ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΡΡΠΎΠΉ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ
Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΡ
ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ (ΠΠ°ΠΉΠ΄Π·Π΅Π½) Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° ΠΊ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΊΠ°Ρ
. ΠΡΠΎ Π²Π΅ΡΠ΅Π»ΠΎ!
Π Π°Π±ΠΎΡΠ°Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ, Π΄ΠΎΠΊΡΠΎΡ ΠΡΠΈΡΡΠΈΠ°Π½ ΠΠ°ΠΉΠ΅Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΡΠ²ΠΎΡ Π»ΡΠ±ΠΎΠ²Ρ ΠΊ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ², ΠΈΠ·ΡΡΠ°ΡΡΠΈΡ
ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΡ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ ΡΡΡΠ΄Π΅Π½ΡΠ°ΠΌ Π΄ΠΎΡΡΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΡΠΏΠ΅Ρ
Π° Π² Python, ΠΎΠ½ ΠΎΡΠ½ΠΎΠ²Π°Π» Π²Π΅Π±-ΡΠ°ΠΉΡ ΠΏΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Finxter.com. ΠΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΡΠΎΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python One-Liners (NoStarch 2020), ΡΠΎΠ°Π²ΡΠΎΡΠΎΠΌ ΡΠ΅ΡΠΈΠΈ ΡΠ°ΠΌΠΎΠΈΠ·Π΄Π°Π½Π½ΡΡ
ΠΊΠ½ΠΈΠ³ ΠΎ Python Π΄Π»Ρ ΠΊΠΎΡΠ΅-Π±ΡΠ΅ΠΉΠΊΠΎΠ², ΡΠ½ΡΡΠ·ΠΈΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠΈ, ΡΡΠΈΠ»Π°Π½ΡΠ΅Ρ ΠΈ Π²Π»Π°Π΄Π΅Π»Π΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· 10 ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠΈΡ
Π±Π»ΠΎΠ³ΠΎΠ² Python ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠΈΡΡ.