目次
はじめに
本日、
自分が開発者のメンバーとして参加している
SciPyの新しいバージョン1.6.0がリリースされました🎉
今回は、1.6.0の新機能や特徴を、
連続ツイートでまとめてみたので、
そちらを、あとから参照しやすいように
記事としてまとめておきます。
過去のバージョンの記事は下記の通りです。
Tweetまとめ
2020年の最後のプレゼントとして、Scipy1.6.0が正式リリースされました🎉1.6.0では、沢山の便利な新機能が追加されたので、簡単にこのツイートのスレッドで紹介したいと思います😃。
— Atsushi Sakai (@Atsushi_twi) 2021年1月1日
SciPy 1.6.0 Release Notes — SciPy v1.6.0 Reference Guide https://t.co/217s9EA09U
まず全体として大きな話はpython3.6がdepricatedになり、python3.7以上サポートになったことです。python3.6を使っている人は3.7以上に更新する必要があります。scipyの開発者としては、python3.7から導入されたdataclassが使えるようになったのが嬉しい限りです。https://t.co/R4ESrr2IHc
— Atsushi Sakai (@Atsushi_twi) 2021年1月1日
今回のリリースで一番大きなものは、scipyの画像処理モジュールであるndimageが大規模改善されたことです。通常の2次元画像を扱うライブラリはOpenCVやscikit-imageなど色々ありますが、ndimageはより多次元の画像処理に特化しており、医療画像や生物学の画像処理でよく使われている(らしい)です。
— Atsushi Sakai (@Atsushi_twi) 2021年1月1日
また、1.6.0からndimage複素数を取り扱えるようになり、一部の物理学の人達はかなり喜んでいるみたいです。またndimageのチュートリアルが作られました。(この部分は自分が少しお手伝いしました)。今回のndimageの改善と大量のバグfixはnumfocusの出資を受けて実施されました。https://t.co/Z76tVx0POn
— Atsushi Sakai (@Atsushi_twi) 2021年1月1日
ちなみに、たまにscipy.ndimageって誰が使っているんですか?って聞かれることがあるのですが、去年話題になった初めてブラックホールを撮影したプロジェクトでは、scipyのndimageがめっちゃ使われています。https://t.co/JDkXP4H7Lh
— Atsushi Sakai (@Atsushi_twi) 2021年1月1日
続いて、最近日本では数理最適化がプチブームですが、そんな人達が喜びそうな改善として、線形計画問題を解くscipy.optimize.linprogにhighsという新しいソルバーが追加されました。ベンチマークを取ったところ、大規模で疎な問題で既存ソルバーに比べてめっちゃ求解が早いですhttps://t.co/arKefLFoYa
— Atsushi Sakai (@Atsushi_twi) 2021年1月1日
highsはこちらのC++ライブラリをcythonでラップしたものです。小規模な問題でも早いので、今回は後方互換性から、見送られましたが、いずれデフォルトのソルバーになると思います。HiGHS - high performance software
— Atsushi Sakai (@Atsushi_twi) 2021年1月1日
for linear optimization https://t.co/veU8A6vxbg
ちなみにこのhighsを使って、混合整数問題を解くAPIを追加する取り組みも始まっています(議論が混沌としていていつ取り込まれるか分かりませんが。。元々この機能もv1.5.0で入る予定だったのですが、全然間に合いませんでした(笑))。
— Atsushi Sakai (@Atsushi_twi) 2021年1月1日
数理最適化関連ですと、他には、割当問題で有名な問題の一つである、二次割当問題を解く関数である scipy.optimize.quadratic_assignmentも新規追加されています。https://t.co/7HATns7Xgo
— Atsushi Sakai (@Atsushi_twi) 2021年1月1日
続いて、統計用のサブモジュールであるscipy.statsも大規模に改善されました。新しい確率分布が追加されたり、片側p値検定対応、nanを入力された時の振る舞いの一貫性改善などが始まりました。ちなみにこれらの改善はFacebookのザッカーバーグ夫妻の基金からサポートを受けて実施されました。
— Atsushi Sakai (@Atsushi_twi) 2021年1月1日
ロボット屋さんにとって、ちょっと嬉しいかもしれない改善は、まずpython実装のkdtreeがdepricatedになり、c実装のもの(以前のckdtree)に完全に置き換わりました。この過程でpython実装のみのAPIが移植されたので、高速で多機能なkdtreeライブラリになったはずです。https://t.co/nL5aXU1Zdy
— Atsushi Sakai (@Atsushi_twi) 2021年1月1日
加えて、自分的に一番使っているscipy.spatial.transform.Rotationがcython化され、パフォーマンスがかなり改善されました。大量のデータの3次元の座標変換などするときなどに、嬉しいと思います。https://t.co/9WczRzWgDh
— Atsushi Sakai (@Atsushi_twi) 2021年1月1日
最後に自分の改善をアピールしておくと、v1.5.0の時はDoc改善ばかりでしたが、Docの改善に加えて、今回はstats.binned_statistic_ddのパフォーマンス改善や、cluster.hierarchy.dendrogramにリーフの色を追加で返すようにしたり、scipy.odr.ODRのファイルダンプの上書き機能などを実装しました。
— Atsushi Sakai (@Atsushi_twi) 2021年1月1日
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。