NumPyソート、検索、カウント
25971 ワード
章
Numpy紹介NumpyインストールNumPy ndarray
NumPyデータ型NumPy配列作成NumPyは、既存のデータに基づいて配列を作成する.
NumPyは、数値区間に基づいて配列を作成する.
NumPy配列スライスNumPy放送NumPy配列反復NumPyビット演算NumPy文字列関数NumPy数学関数NumPy統計関数NumPyソート、検索、カウントNumPyコピーおよびビューNumPyマトリクスライブラリ関数NumPy線形代数NumPyには、様々なソートに関する関数が用意されています.これらのソート関数は、実行速度、最悪のパフォーマンス、必要なワークスペース、およびアルゴリズムの安定性を特徴とする異なるソートアルゴリズムを実現する.次の表は、3つのソートアルゴリズムの比較です.
種類
スピード
最悪の場合
ワークスペース
あんていせい
‘quicksort’
1
O(n^2)
0
no
‘mergesort’
2
O(n*log(n))
~n/2
yes
‘heapsort’
3
O(n*log(n))
0
no
numpy.sort()
関数構文:
パラメータ aソート対象配列 axisソートの軸を指定します.ない場合は、最後の軸で並べ替えます. kindデフォルトは「quicksort」 order指定ソートフィールド 例
しゅつりょく
numpy.argsort()
この関数は、まず配列をソートし、ソート後の配列インデックスを抽出して配列形式で返します.元の配列は変更されず、インデックスによってソート結果が得られます.
例
しゅつりょく
numpy.lexsort()
SQLのORDERBYの複数のフィールド:
元の配列は変更されず、この関数はソート後の配列インデックスを抽出し、配列形式で返し、インデックスによってソート結果を得ることができます.
例
しゅつりょく
numpy.argmax()とnumpy.argmin()
この2つの関数は、指定した軸上の最大要素と最小要素のインデックスを返します.
例
しゅつりょく
numpy.nonzero()
この関数は、配列内のゼロ以外の要素のインデックスを返します.
例
しゅつりょく
numpy.where()
この関数は、配列内の条件を満たす要素を検索し、インデックスを返します.
例
しゅつりょく
numpy.extract()
この関数は、配列内の条件を満たす要素を返します.
例
しゅつりょく
Numpy紹介NumpyインストールNumPy ndarray
NumPyデータ型NumPy配列作成NumPyは、既存のデータに基づいて配列を作成する.
NumPyは、数値区間に基づいて配列を作成する.
NumPy配列スライスNumPy放送NumPy配列反復NumPyビット演算NumPy文字列関数NumPy数学関数NumPy統計関数NumPyソート、検索、カウントNumPyコピーおよびビューNumPyマトリクスライブラリ関数NumPy線形代数NumPyには、様々なソートに関する関数が用意されています.これらのソート関数は、実行速度、最悪のパフォーマンス、必要なワークスペース、およびアルゴリズムの安定性を特徴とする異なるソートアルゴリズムを実現する.次の表は、3つのソートアルゴリズムの比較です.
種類
スピード
最悪の場合
ワークスペース
あんていせい
‘quicksort’
1
O(n^2)
0
no
‘mergesort’
2
O(n*log(n))
~n/2
yes
‘heapsort’
3
O(n*log(n))
0
no
numpy.sort()
sort()
は配列を並べ替え、並べ替えられた配列のコピーを返します.軸方向を指定できます.関数構文:
numpy.sort(a, axis, kind, order)
パラメータ
import numpy as np
a = np.array([[3,7],[9,1]])
print (' :' )
print (a)
print ('
')
print (' :' )
print (np.sort(a))
print ('
')
print (' 0 :')
print (np.sort(a, axis = 0))
print ('
')
#
dt = np.dtype([('name', 'S10'),('age', int)])
a = np.array([("kevin", 21),("peter",25),("tony", 17), ("mike",27)], dtype = dt)
print (' :')
print (a)
print ('
')
print (' name :')
print (np.sort(a, order = 'name'))
しゅつりょく
:
[[3 7]
[9 1]]
:
[[3 7]
[1 9]]
0 :
[[3 1]
[9 7]]
:
[(b'kevin', 21) (b'peter', 25) (b'tony', 17) (b'mike', 27)]
name :
[(b'kevin', 21) (b'mike', 27) (b'peter', 25) (b'tony', 17)]
numpy.argsort()
この関数は、まず配列をソートし、ソート後の配列インデックスを抽出して配列形式で返します.元の配列は変更されず、インデックスによってソート結果が得られます.
例
import numpy as np
x = np.array([3, 1, 2])
print (' x:')
print (x)
print ('
')
print (' argsort() x:')
y = np.argsort(x)
print (y)
print ('
')
print (' :' )
print (x[y])
print ('
')
print (' :')
for i in y:
print (x[i])
しゅつりょく
x:
[3 1 2]
argsort() x:
[1 2 0]
:
[1 2 3]
:
1
2
3
numpy.lexsort()
SQLのORDERBYの複数のフィールド:
ORDER BY 1, 2, 3
と同様に、複数のシーケンスをソートします.表計算ドキュメントのソートは、各カラムがシーケンスを表し、後のカラムほど優先度が高くなることが考えられます.元の配列は変更されず、この関数はソート後の配列インデックスを抽出し、配列形式で返し、インデックスによってソート結果を得ることができます.
例
import numpy as np
a = np.array(['a','b','c','d','e'])
b = np.array([12, 90, 380, 12, 211])
ind = np.lexsort((a,b))
print(" :")
print(ind)
print(" :")
for i in ind:
print(a[i],b[i])
しゅつりょく
:
[0 3 1 4 2]
:
a 12
d 12
b 90
e 211
c 380
numpy.argmax()とnumpy.argmin()
この2つの関数は、指定した軸上の最大要素と最小要素のインデックスを返します.
例
import numpy as np
a = np.array([[30,40,70],[80,20,10],[50,90,60]])
print (' :')
print (a)
print ('
')
print (' argmax() :')
print (np.argmax(a, 0))
print ('
')
print (' argmin() :')
print (np.argmin(a, 0) )
print ('
')
しゅつりょく
:
[[30 40 70]
[80 20 10]
[50 90 60]]
argmax() :
[1 2 0]
argmin() :
[0 1 1]
numpy.nonzero()
この関数は、配列内のゼロ以外の要素のインデックスを返します.
例
import numpy as np
b = np.array([12, 90, 380, 12, 211])
print("
", b)
print ('
')
print(" ")
print(b.nonzero())
しゅつりょく
[ 12 90 380 12 211]
(array([0, 1, 2, 3, 4]),)
numpy.where()
この関数は、配列内の条件を満たす要素を検索し、インデックスを返します.
例
import numpy as np
b = np.array([12, 90, 380, 12, 211])
print(np.where(b>12))
c = np.array([[20, 24],[21, 23]])
print(np.where(c>20))
しゅつりょく
(array([0, 1, 1]), array([1, 0, 1]))
numpy.extract()
この関数は、配列内の条件を満たす要素を返します.
例
import numpy as np
b = np.array([12, 90, 380, 12, 211])
print(np.extract(b>12, b))
c = np.array([[20, 24],[21, 23]])
print(np.extract(c>20, c))
しゅつりょく
[ 90 380 211]
[24 21 23]