ホームページ >バックエンド開発 >Python チュートリアル >numpy array_python のいくつかのソート方法に関する簡単な説明

numpy array_python のいくつかのソート方法に関する簡単な説明

韦小宝
韦小宝オリジナル
2017-12-16 13:32:493308ブラウズ

この記事は主に numpy 配列のいくつかのソート方法を紹介しており、numpy に興味のある友人は参考にしてください。

簡単な紹介

NumPy システムは、Python 用のオープンソースの配列計算拡張機能です。このツールを使用すると、Python 独自の入れ子になったリスト構造 (行列の表現にも使用できます) よりもはるかに効率的に大きな行列を保存および処理できます。

配列を作成する

1次元配列を作成する:

data = np.array([1,3,4,8])
data = np.array([1,3,4,8])  

查看数组维度

data.shape

查看数组类型

data.dtype

通过索引获取或修改数组元素

data[1] 获取元素<br>data[1] = 'a' 修改元素  

创建二维数组

data = np.array([[1,2,3],[4,5,6]]) 两个元素均为列表0c6dc11e160d3b678d68754cc175188a2.data = np.arange(10) 与python的range一样,range返回列表,arange返回array类型的一个数组0c6dc11e160d3b678d68754cc175188a3.data2 = data.reshape(2,5) 返回一个2*5的数组,他不是拷贝数组是引用,只是返回数组的不同视图,data改变data2也会改变

创建特殊数组 

data = np.zeros((2,2)) 创建2*2全为0的2维数组<br>data = np.ones((2,3,3,)) 创建全为1的三维数组<br>data = np.eye(4) 创建4*4的对角数组,对角元素为1,其它都为0<br>

数组转换

data = np.arange(16).reshape(4,4) 将0-16的移位数组转换为4*4的数组  

排序方式

说明:经常需要对数组或者list进行排序,python提供了好几种排序的函数,下面说明下特点;

二维数组a:

1 4
3 1

1、ndarray.sort(axis=-1,kind='quicksort',order=None)

使用方法:a.sort

参数说明:

axis:排序沿着数组的方向,0表示按行,1表示按列

kind:排序的算法,提供了快排、混排、堆排

order:不是指的顺序,以后用的时候再去分析这个

作用效果:对数组a排序,排序后直接改变了a

例如:

>>a.sort(axis=1)
>>print a

1 4
1 3

2、numpy.sort(a,axis=-1,kind='quicksort',order=None)

使用方法:numpy.sort(a)

参数说明:

a:要排序的数组,其他同1

作用效果:对数组a排序,返回一个排序后的数组(与a相同维度),a不变

例如:

>>print numpy.sort(a,axis=1)
1 4
1 3
>>print a
1 4
3 1

3、numpy.argsort(a,axis=-1,kind='quicksort',order=None)

使用方法:numpy.argsort(a)

参数说明:同2

作用效果:对数组a排序,返回一个排序后索引,a不变

例如:

>>print numpy.argsort(a,axis=1)
0 1
1 0

4、sorted(iterable,cmp=None,key=None,reverse=False)

配列を表示する次元

data.shape

配列型を表示

data.dtype

インデックスによって配列要素を取得または変更します

data[1] 要素の取得
data[1] = 'a' 要素の変更

二次元配列の作成

data = np.array ([[1,2 ,3],[4,5,6]]) 両方の要素はリストです0c6dc11e160d3b678d68754cc175188a2.data = np.arange(10) Python の range と同様に、range はリストと arange を返します。配列を返します。0c6dc11e160d3b678d68754cc175188a3.data2 = data.reshape(2,5) の配列は、配列をコピーするのではなく、配列の別のビューを返すだけです。データが変更されると、data2 も変更されます

特別な配列を作成します

data = np.zeros((2,2)) すべて 0 の 2*2 2 次元配列を作成します<br> />data = np.ones((2, 3,3,)) すべて 1 の 3 次元配列を作成します<br>data = np.eye(4) 対角要素が次のとおりである 4*4 対角配列を作成します1、その他は 0<br> code><p></p> <p>配列変換</p> <p><span style="font-size: large"><code>data = np.arange(16).reshape(4,4) 0-16 シフト配列を 4* に変換します4 配列

ソートメソッド

説明: 配列またはリストをソートする必要があることがよくあります。 Python には、いくつかのソート関数が用意されています。 2 次元配列 a:

>>c=sorted(b.iteritems(),key=operator.itemgetter(1),reverse=False)
>>print c[(&#39;c&#39;, 1), (&#39;a&#39;, 2), (&#39;b&#39;, 3)]
1, ndarray.sort(axis=-1,kind='quicksort',order=None)

使用法: a.sort

パラメータの説明:

axis: sort配列の方向に沿って、0 は行を意味し、1 は列を意味します

kind: ソートアルゴリズム、クイックソート、混合ソート、ヒープソートを提供します

order: 順序を参照しません。使用するときにこれを分析します後で実行します🎜🎜 効果: 配列では、ソート後に a🎜🎜 が直接変更されます。 例: 🎜🎜🎜rrreee🎜🎜🎜rrreee🎜🎜🎜2. numpy.sort(a,axis=-1) ,kind='quicksort',order=None )🎜🎜使用法: numpy.sort(a)🎜🎜パラメータの説明: 🎜🎜a: ソートされる配列、その他は1 と同じ🎜🎜効果: 配列 a をソート、ソートされた配列 (a と同じ次元)、変更されていない配列を返します🎜🎜例: 🎜🎜🎜rrreee🎜🎜🎜3, numpy.argsort(a, axis=-1, kind ='quicksort', order=None) 🎜🎜使用法: numpy.argsort(a)🎜🎜パラメータの説明: 2 と同じ🎜🎜効果: 配列 a をソートし、ソートされたインデックスを返し、a は変更されません🎜🎜例: 🎜🎜 🎜rrreee🎜🎜🎜4, sorted(iterable,cmp=None,key=None,reverse=False)🎜🎜説明: 組み込みの並べ替え関数は、リスト、辞書などに使用できます。 🎜🎜iterable: 反復可能な型です。🎜 🎜cmp: 比較に使用される関数。比較される内容はキーによって決まり、デフォルト値があり、コレクション内の項目を反復します。🎜🎜key: の特定の属性と関数を使用します。リスト要素をキーワードとして指定し、デフォルト値を持ち、コレクションのいずれかの項目を繰り返します。🎜🎜リバース: 並べ替えルール。reverse=True または reverse=False、デフォルトは False (小さいものから大きいものへ)。 🎜🎜戻り値: iterable と同じ、ソートされた反復可能型です。🎜🎜例: b は辞書です🎜🎜b:🎜🎜{'a':2,'c':1,'b':3 }🎜🎜 並べ替え: 🎜🎜🎜rrreee🎜🎜🎜 表示: 返されるのはリストです🎜🎜🎜🎜概要🎜🎜🎜🎜 以上が、numpy 配列のいくつかの並べ替え方法に関するこの記事の全内容です。誰もが役に立ちます。興味のある友人は、引き続きこのサイトの他の関連トピックを参照してください。欠点がある場合は、メッセージを残して指摘してください。このサイトをサポートしてくださったお友達に感謝します! 🎜🎜🎜🎜関連する推奨事項: 🎜🎜🎜🎜🎜🎜Python 科学コンピューティング - Numpy のクイック スタート🎜🎜🎜🎜🎜なぜ numpy 配列はそんなに速いのですか? 🎜🎜🎜🎜Python NumPy ライブラリのインストールと使用上のメモ🎜🎜

以上がnumpy array_python のいくつかのソート方法に関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。