2017-01-05 9 views
4

np.partitionの機能がどのように機能するかを調べようとしています。私はnp.partition(arr, kth=2)を呼び出す場合 は例えば、numpyパーティションの仕組み

arr = np.array([ 5, 4, 1, 0, -1, -3, -4, 0])

を検討し、私は後にパーティションの配列は要素に1つ少ない、1と大きい要素1を分割することを期待

np.array([-4, -3, -1, 0, 1, 4, 5, 0])

を得ました。 しかし、2番目のゼロは、最後の配列位置に置かれます。これは、パーティションの後の正しい場所ではありません。

+4

文書を読もうとしましたか? https://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.partition.html – MaLiN2223

+0

はい、あります。ドキュメントによると、 "要素のk番目の値は最終的なソートされた位置にあり、すべての小さな要素はその前に移動し、それと等しいかそれ以上の要素はすべて移動します。"ユニークでない配列での動作についての言葉ではありません。私はユニークな配列上のパーティションがうまく動作することを理解しました。 –

答えて

2

documentationと言う:

はk番目の位置における要素の値は、それが にソートされた配列であろう位置にある ように並べ替え、その要素を持つ配列のコピーを作成。 k番目の要素より小さいすべての要素は より前に移動され、それ以上の要素はその要素の後ろに移動されます。 の順序は、2つのパーティション内の要素は定義されていません。あなたが与える例で

は、-1である(ゼロから始まる)ソートされたリストの2番目の要素を選択しており、アレイがソートされた場合に正しい位置にあるように思われます。

+1

それは 'はっきり'かもしれませんが、元の配列の 'k番目の位置と結果の'の第k番目の位置を混同するのは簡単です。 – hpaulj

+0

はい、そうです。おそらく、その部分はドキュメントの中でもっと強調されるかもしれません。 –