IT

【python】natsortをインストール・使い方

こんにちは。Toruです。

今回はpythonライブラリ natsortについてお話しします。

データを数字の順に並べたいとき、普通にsortを使うと不自然な並びになることがあるが、natsortを使うことで自然な並びにすることができます。

それでは詳しくみていきましょう。



現状の問題点

例えばファイル名などをソートして順番を揃えたいとき、 sort() を使った場合。

これを実行した結果がこちら。

これじゃない。私たちが求めていたのは1, 2, 3, …みたいな、ごく自然な並びなのに。

 

もう一つ試しに、あるフォルダーの中にあるmnistデータの画像に名前をつけて他のファイルに保存する場合。(今回は、試しに画像サイズを変えて別のフォルダーに保存する。)

■mnist画像を取り出し、指定のフォルダーに保存するプログラム

■保存されたmnist画像が入っているフォルダー

■mnist画像のサイズを変えて別のフォルダーに保存する。

■保存されたmnist画像が入っているフォルダー

この様にbeforeフォルダーに入っていたデータの並びとは全く関係のない並びで保存される。

この状態だと例えば、ファイル名で画像を取り出ししたいとき、自分が思っていない画像が出てくるのでこれをどうにかしたい。

救世主:natsort

そんな状況を回避してくれるのがこのnatsortというやつ。

natsortedとは自然順アルゴリズムでソートしたものをいう。ちなみにコンピュータがソートしたもの(sort() )をコンピュータ文字列ソートアルゴリズム

普段私たちが数字を並べた時の並べ方はこの自然順アルゴリズムの並べ方である。

 

pythonライブラリなのでインストールが必要だが、これらの問題を解決してくれる。まずはいつも通りVSCodeのターミナルからインストール。インストールの方法はこちらの記事から試してください。

 

インストールが終わったら、 from natsort import natsorted を入れて、 sort() のところを natsorted() に変えてみましょう。

実行結果

 

■mnist画像を取り出し、指定のフォルダーに保存するプログラムの場合

■実行後のafterフォルダー内

ちゃんとbeforeフォルダー内と同じ並びとファイル名になっているのが確認できます。



最後に

まとめ

  • 私たちがやっている数字の並べ方は、自然順アルゴリズム(自然順ソート)
  • natsort() は自然順アルゴリズム。 sort() はコンピュータ文字列アルゴリズム。
  • natsorted() は、’1′,  ‘2’, ‘3’, …と並べるのに対し、 sort() は、’1′, ’10’, ’11’, …と並べる。

以上、natsortについて説明しました。使い方もとても簡単なのでぜひ皆さん使ってみてください。

pythonには様々なライブラリが無料で扱えるのでとても便利ですよね。

今後もpythonの便利なライブラリや使い方について紹介していきたいと思いますので今後も期待していてください。

おすすめの書籍

私が大学時代、pythonを使ってディープラーニングを研究していたときにすごく参考になった書籍を紹介します。pythonに興味がある方なら必ず読んだ方が良い内容になっているのでぜひ読んでみてください。

 

■おすすめ・関連サイト

【5分で解説】感覚で理解するpythonのclass文こんにちは。Toruです。 今回は、pythonのclass文について誰でも感覚的に理解できるように説明していきたいと思います。こ...
【初心者向け】CIFAR10でAutoEncoderをKerasを使って実装してみたディープラーニングライブラリのKerasとcifar10データセットを使ってAutoEncoderモデルを作成しました。今回はCNNを使って作成しました。Autoencoderは現在はあまり使われていませんがこれを応用すれば超解像に使うことができると思います。このサイトでは初心者の方にもわかりやすく説明しています。...
【Dense】hyperasを使ってパラメータチューニングする-part1こんにちは。Toruです。 今回はディープラーニングで必要不可欠とされるパラメーターチューニングを勝手にやってくれるhyperas...
HHKBのキー配列
【なぜ人気?】超高級キーボードHHKB HYBRID Type-Sを実際に買ってみた。今回はHHKB Hybrid Type-sの開封レビューと、1日使用してみた感想を紹介します。HHKBは超高級品となっているのに、現在でも品薄状態が続いています。なぜこの高級キーボードが売れるのでしょうか。私なりにまとめてみると、「静音性」、「無線接続/高速切り替え」、「静電容量無節点方式」が人気の理由だと思います。...

 

■参考サイト:

https://pypi.org/project/natsort/

https://qiita.com/peg/items/8bf13cff8259ab464d8b







ABOUT ME
Toru
普段は会社員をしながらブログを書いてます。 文章力を上げるために始めたブログです。 主に家電/ガジェット系、プログラミングに関する記事を書きますが、たまに生活雑貨や投資信託関連の記事も書きます。初心者の方にもわかりやすく記事を書きます。 質問にもなるべく回答したいと思いますが、質問内容によっては答えかねる場合もあります。 お問い合わせ先:fearandloathinginlasvegas.toru@gmail.com

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です