Pythonで数学・科学技術計算を扱う上で必要なツールやライブラリについて簡単にまとめてみる

この記事は、 [BRIGHT VIE Advent Calendar 2017 - Qiita](https://qiita.com/advent-calendar/2017/brightvie) 21日目の記事になります。

# はじめに

弊社でも蓄積しているデータを分析したり可視化したり、また機械学習を用いたデータの活用に最近取り組んでおりますが、
私自身大学時代に最適化関連の分野に取り組んでいたときに少しだけPythonを触った程度なので、
改めてしっかり勉強してみようと思い、まずは基礎中の基礎から取り組んでいくことにしました。

今日は、「名前は聞いたことあるけど何それ...」を解消するために、
利用するツールやライブラリについて簡単にですがまとめてみました。


# 利用するツールやライブラリについて簡単なまとめ

## PyCharm

<img width="200px" src="https://qiita-image-store.s3.amazonaws.com/0/17346/76e1ef1d-1e07-79a8-c6fc-1a9da50e0326.png">

「JetBrains」が出している高品質なIDEで、「Widows/OS X/Linux」で動作可能なPython向けのIDEです。IDEツールなのでお好きなものを使うのが良いと思いますが、Pythonを扱ったり初心者には優しいようです。

- [PyCharm 公式](https://www.jetbrains.com/pycharm/)
- [最強のPython統合開発環境PyCharm](https://qiita.com/yamionp/items/f88d50da8d6b548fc44c)

## Anaconda

Pythonや関連するパッケージをインストールするためのツールであり、主要なライブラリをオールインワンでインストール可能です。
Anacondaをインストールするとcondaコマンドが利用可能になります。Pythonのパッケージ管理システムのpipと併用することも可能なので、condaに入っていないライブラリはpipでインストールすることができます。

- [Anaconda 公式](https://www.anaconda.com/)
- [データサイエンティストを目指す人のpython環境構築 2016](https://qiita.com/y__sama/items/5b62d31cb7e6ed50f02c)
- [Anaconda で Python 環境をインストールする](https://qiita.com/t2y/items/2a3eb58103e85d8064b6)

## Pythonライブラリのインストール

上記にも少し記載していますが、Anacondaに無いパッケージをインストールしたい場合などには、Pythonのパッケージ管理システムpipを利用します。

- [anaconda環境にpythonのモジュールを追加する方法](https://qiita.com/yotayokuto/items/c55bfa2b892beddc488e)
- [pipのインストール方法](https://qiita.com/suzuki_y/items/3261ffa9b67410803443)

今回下記に記載するものは、Anacondaに標準で入っているもののため、そこまで気にする必要はないかもですね。

### numpy

![image.png](https://qiita-image-store.s3.amazonaws.com/0/17346/80c41e8a-25b1-968d-34ef-d90f9c4a4023.png)

Pythonを使った科学計算の基本ライブラで、後述するSciPyと併せて科学技術計算でよく利用されるようです。

> NumPy は Pythonプログラミング言語の拡張モジュールであり、大規模な多次元配列や行列のサポート、これらを操作するための大規模な高水準の数学関数ライブラリを提供する。(引用元 Wikipedia)


pipでインストールする場合には下記のコマンドを実行

```shell
pip install numpy
```

- [NumPy](http://www.numpy.org/)
- [Pythonの数値計算ライブラリ NumPy入門](http://rest-term.com/archives/2999/)
- [numpyの使い方](https://qiita.com/jyori112/items/a15658d1dd17c421e1e2)


### scipy(SciPy library)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/17346/86b319fd-e184-7744-4c18-1c89f261da3d.png)


scipyは、NumPyと同様で高度な科学計算を行うためのライブラリです。
NumPyで行える配列や行列の演算に加えて、信号処理や統計といった計算ができるようです。


pipでインストールする場合には下記のコマンドを実行

```shell
pip install scipy
```

- [scipy(SciPy library) ドキュメント](http://scipy.github.io/devdocs/)
- [【Python入門】絶対に知っとくべきライブラリscipyの基本的な使い方](http://programming-study.com/technology/python-scipy/)

ちなみに広義な意味で使われる「Science + Python = SciPy」もあるようで、
SciPyとは、Pythonベースの数学・科学技術計算用ソフトウェアエコシステムの名称とのことです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/17346/d810b688-cf14-d836-00da-0436ba4011b9.png)

これまでに記載した、「NumPy」や「SciPy library」、このあと記載する「Matplotlib」など
それぞれ得意とする領域のパッケージを組み合わせて構築される「数学・科学技術計算用ソフトウェアエコシステム」を指すようです。

- [SciPy.org](https://www.scipy.org/)
- [SciPyとその仲間たち（NumPy, IPython など）の違いと関係Add Star](http://d.hatena.ne.jp/over80/20160221/scipy)


### matplotlib

![image.png](https://qiita-image-store.s3.amazonaws.com/0/17346/98e3bf93-4051-6992-5b17-b667126ea072.png)

matplotlibは、計算結果などをグラフで描画するためのライブラです。
numpyやscipyと組み合わせることが多いので必要に合わせて先にnumpyやscipyをインストールしておくとよさそうです。

pipでインストールする場合には下記のコマンドを実行

```
pip install matplotlib
```

- [matplotlib.org](https://matplotlib.org/)
- [【Python入門】ライブラリmatplotlibの基本的な使い方](https://qiita.com/Morio/items/d75159bac916174e7654)


### pandas

![image.png](https://qiita-image-store.s3.amazonaws.com/0/17346/69bdb8b4-689a-92ee-0efe-b46e027ced46.png)

pandasとは、行列データを扱いやすくしたり、集計を行うためのライブラリです。
CSVファイルをDataFrame型の行列データとして扱えるようにして読み取るなどが出来るようです。


pipでインストールする場合には下記のコマンドを実行

```
pip install pandas
```

- [pandas.pydata.org](http://pandas.pydata.org/)
- [Pandasを使ったデータ操作の基本](http://cocodrips.hateblo.jp/entry/2017/07/30/185430)


### IPython

![image.png](https://qiita-image-store.s3.amazonaws.com/0/17346/36097bf6-c9f4-a6fd-8a14-301e184fa73b.png)

IPythonは、Pythonの対話型インタプリタを拡張したもので、「拡張された対話型シェル」「分離型プロセス間通信モデル」「並列コンピューティング機構」などの機能も備えているようです。


- [ipython.org](http://ipython.org/)
- [IPythonの使い方](https://qiita.com/5t111111/items/7852e13ace6de288042f)

pipでインストールする場合には下記のコマンドを実行

```
pip install ipython
```


# まとめ

主に「SciPy.org」のコアパッケージのまとめみたいな感じになってしまいましたが、
初心者にとっては、どんなライブラリが便利で、何が出来てどういうものなのかを理解することも大事だと思います。

Python向けのIDEとして「PyCharm」があり、
「Anaconda」を利用して数学・科学技術計算を便利に扱うPythonライブラリたちを管理する。
（上記で足りないものはパッケージ管理ツール「pip」を利用する）

そして、コアなパッケージとしては下記のようなものがある。

| パッケージ名 | 説明 |
|:-:|:-:|
| NumPy | ベクトルや行列計算を行うためのライブラリ |
| SciPy library | 信号処理や統計などの科学計算用のライブラリ |
| Matplotlib | グラフを描画するためのライブラリ |
| pandas | Rに類似のデータフレームを提供するライブラリ |
| IPython | 対話的にPythonコマンドを実行するツール |

- 参考
   - [機械学習のためのPython/NumPy/pandasチュートリアル（パート1）](http://enakai00.hatenablog.com/entry/2015/09/16/114637)


具体的な使い方などはやりたいことを実現する過程の中で今後学んでいこうと思います。