機械学習 はじめよう

第6回 Numpyの導入

この記事を読むのに必要な時間:およそ 4.5 分

今回は第3回の冒頭で紹介した,Numpyの導入方法と簡単な使い方について説明します。次回で様々な分布を扱うためにNumpyの準備をしておきましょう。

Numpyの導入

Numpyはオープンソースの拡張モジュールで行列や多次元配列と,それらを操作するための数学関数ライブラリを提供しています。Numpyの内部はC言語で実装されているため,普通にPythonで実装した時と比較するとはるかに高速に実行することが可能です。

ここではインストールの仕方とNumpyの簡単な実行例を確認しておきましょう。

インストール

WindowsとMacOSXのPCにNumpyをインストールする場合は,NumpyのサイトのDownloadのページの上の方にあるNumPyのProjectからインストール先のマシンのOSに対応したファイルをダウンロードして実行してください。

しかし,MacOSXにデフォルトでバインドされているPythonを利用している場合はインストールできません。Snow Leopardを利用している場合はScipy Superpackを利用すると簡単にインストールできます。このパッケージのバイナリはSnow Leopard,Xcode 3.2.2,GCC4.2.1,Python2.6.1環境向けにビルドされています。

ソースコードリポジトリから最新版のインストールを行う場合は,以下のように実行してください。

$ svn co http://svn.scipy.org/svn/numpy/trunk numpy
$ cd numpy
$ su
$ sudo python setup.py install

また,gitからインストールもsvnの場合も同様に以下の手順でインストールできます。

$ mkdir ~/tmp
$ cd ~/tmp
$ git clone git://github.com/numpy/numpy.git numpy
$ cd numpy
$ sudo python setup.py install

インストールを終えたら,単体テストを実行してみましょう。単体テストを実行するにはnoseというサードパーティー製のライブラリをPython環境にインストールしておく必要があります。easy_installについて良くわからないという方はこちらを参照してください。

$ sudo easy_install nose

実際に単体テストを実行してみると,以下のようになります。

>>> import numpy
>>> numpy.test()
Running unit tests for numpy
NumPy version 2.0.0.dev8716
NumPy is installed in /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/numpy
Python version 2.6.6 (r266:84292, Oct  8 2010, 22:12:21) [GCC 4.2.1 (Apple Inc. build 5646)]
nose version 0.11.3
 
(中略
 
----------------------------------------------------------------------
Ran 3029 tests in 17.020s
 
OK (KNOWNFAIL=4, SKIP=1)
<nose.result.TextTestResult run=3029 errors=0 failures=0>

numpy.test()でerrorが出力されていなければ,問題なくnumpyを利用できるでしょう。

Numpy簡単な使い方

それでは,簡単にNumpyの実行例を確認していきます。まずは対話型インタプリタを起動してNumpyをインポートしてみましょう。ここでは慣例に従ってnpと別名をつけて利用することにします。

$ python
Python 2.6.6 (r266:84292, Oct  8 2010, 22:12:21)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import numpy as np

以下の例では,numpyはインポートされているとしてインポートの部分は省略します。

Numpyのバージョンを確認する

これで現在利用しているNumpyのバージョンを確認できます。

>>> np.version.version
'2.0.0.dev8716'

キーワードからNumpyの機能を探す

Numpyでは関数lookfor()を利用することで,Numpy内のdocstringからキーワードから必要になりそうな機能をリストアップしてくれます。例えば,キーワード'array'から使えそうな機能を探してみましょう。

>>> np.lookfor('array')

すると,以下のように検索された機能の一覧が表示されます。

Search results for 'array'
--------------------------
numpy.array
   Create an array.
numpy.asarray
   Convert the input to an array.
numpy.ndarray
   ndarray(shape, dtype=float, buffer=None, offset=0,
numpy.asfarray
   Return an array converted to a float type.
numpy.recarray
   Construct an ndarray that allows field access using attributes.
numpy.all
   Test whether all array elements along a given axis evaluate to True.
numpy.array_str
   Return a string representation of the data in an array.
numpy.any
   Test whether any array element along a given axis evaluates to True.
numpy.eye
   Return a 2-D array with ones on the diagonal and zeros elsewhere.
(略...

検索結果の画面から,通常の対話型インタプリタに戻るにはqを押下してください。

著者プロフィール

恩田伊織(おんだいおり)

1979年生まれの埼玉県出身。数学と関数型言語,SFとボードゲーム好きなプログラマー。好きな言語はRubyとLISP。現在は航空管制の基盤開発に従事している。

Twitter:http://twitter.com/Iori_o

コメント

  • 2ページ目の表記ミスについて

    「arrayオブジェクトを操作する」の最後で行列の四則演算をやっていますが、乗算箇所で * が記述されてないようです。

    Commented : #1  NAL (2010/12/15, 12:14)

コメントの記入