2016-12-24 10 views
3

これは重複のように見えるかもしれませんCheck whether non-index column sorted in Pandas配列がソートされているかどうかを判断する最も簡単な方法は何ですか?

私はその投稿とすべての回答を読んでいます。 numpyを使用して誰も(1つの回答を保存する)アドレスはありません。それはすべてpythonのリストに焦点を当てています。 numpyタグで同様の質問をすることで、別のクラスの回答を得ることができると思います。それが問題になっています。


は、2つの配列abを検討してください。 bはソートされ、aはソートされていません。

a = np.array([2, 1, 3, 0]) 

b = np.arange(4) 

私はこのアイデアを改善するために他の

def is_sorted(x): 
    return (np.arange(len(x)) == np.argsort(x)).all() 

何ができるのソートネスを決定するために、この機能を書いていますか? pd.Seriesまたはnp.ndarrayがソートされているかどうかを判断する最も速いpandasまたはnumpyアルゴリズムは何ですか?


is_sorted(a) 

False 

is_sorted(b) 

True 

+3

一部パンダアルゴリズムは、ここで言及:http://stackoverflow.com/questions/28419877/check-whether-non-index-column-sorted-in-pandas(私は、それは重複だとは言いませんよいくつかの良い提案があるようです) – JohnE

+0

それらは便利です!そのリンクをありがとう。 – piRSquared

+1

'(np.diff(a)> 0).all()'と '(np.diff(b)> 0).all()'はどうですか?唯一の問題は、逆の順序です。しかし、私は 'np.abs(np.diff(a)> 0).all()'はうまくいくと思いますか? – Abdou

答えて

2

それは配列をソートするが、配列はすでにそれだけでO(n)をとるソートされている場合伝えるためにO(nlogn)です。

is_sorted = lambda x: (np.diff(x)>=0).all() 
+0

大きなO情報を追加していただきありがとうございます! – piRSquared

+0

NaN値がある場合、これは失敗します。 –

+0

あなたは2つのステップに分けるだけです:1)配列はソート可能ですか? 2)そうなら、それは分類されていますか? –

関連する問題