初心者のためのpython入門

自分がつまづいたところやつまづきやすいところを中心に書いていきます。また、役に立つライブラリの紹介などをしていきます。

Numpy[1]

前書き

あけましておめでとうございます。私用のため更新ができない日々が続いていますが、頑張って更新していきたいと思います。
前回までの内容で、Pythonについての基本的な文法は終わりました。今回からは、より実践的に使っていくために必要なことについて説明していきます。今回は、Numpyの使用法について簡単に書いていきます。

Numpy

Numpyとは、 Pythonの人気を支えているライブラリの1つであり、数値計算に特化したライブラリです。多次元配列を簡単に扱うことができ、Pythonの標準のリストやタプルよりも高速です。

Numpyのインポート

import numpy as npでインポートすることができます。as npとして名前をつけているのは、Pythonにおける慣習によるものです。もし、ライブラリが見つからない場合は、pip install numpyによりインストールできます。

単純な配列の生成

  • np.array(list or tuple): 数値のリストやタプルから配列を生成します。(複素数を生成することもできます。)
  • np.arange(start, end, step): startからend-1までのステップごとの値の配列を生成する。range()と使い方は同じです。
>>> import numpy as np
>>> a = np.array([2, 4, 6, 8])
>>> a
array([2, 4, 6, 8])
>>> type(a)
<class 'numpy.ndarray'>
>>> b = np.array((1, 3, 5))
>>> b
array([1, 3, 5])
>>> c = np.arange(10)
>>> c
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> d = np.arange(1, 10, 2)
>>> d
array([1, 3, 5, 7, 9])
>>> e = np.array([1+.2j, 2+1.j]) #複素数
>>> e
array([ 1.+0.2j,  2.+1.j ])

特殊な配列の生成

  • np.zeros(): 引数に与えられた次元の0行列を生成する。引数はタプルで渡す。
  • np.ones(): 引数に与えられた次元の行列を生成する。要素は全て1。引数はタプルで渡す。
  • np.random.random(): 引数に与えられた次元の行列を生成する。要素は0.0~1.0から無作為。引数はタプルで渡す。
  • np.identity(): 引数に与えられた次元の単位行列を生成する。
  • np.eye(): np.identity()とほとんど同じだが、列数を指定できる。
  • np.empty(): 引数に与えられた次元の行列を生成する。初期化はされない。引数はタプルで渡す。
  • np.zeros_like(): 引数に与えられた行列と同じ次元の0行列を生成する。
# np.zeros
>>> a = np.zeros((2, 2))
>>> a
array([[ 0.,  0.],
       [ 0.,  0.]])

# np.ones
>>> b = np.ones((3, 2))
>>> b
array([[ 1.,  1.],
       [ 1.,  1.],
       [ 1.,  1.]])

# np.random.random
>>> c = np.random.random((2, 3))
>>> c
array([[ 0.44477108,  0.02404381,  0.1192741 ],
       [ 0.48164649,  0.52466198,  0.42455357]])

# np.identity
>>> d = np.identity(4)
>>> d
array([[ 1.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  1.]])

# np.eye
>>> e = np.eye(3,2)
>>> e
array([[ 1.,  0.],
       [ 0.,  1.],
       [ 0.,  0.]])

# np.empty
>>> f = np.empty((2, 3))
>>> f
array([[ 0.44477108,  0.02404381,  0.1192741 ],
       [ 0.48164649,  0.52466198,  0.42455357]])

# np.zeros_like
>>> g = np.zeros_like(d)
>>> g
array([[ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])

配列の情報を取得

  • ndarray.ndim: 階数を返す。
  • ndarray.size: 配列内の値の総数を返す。
  • ndarray.shaep: 各階の値の数を返す。
  • ndarray.dtype: 配列の型を返す。
>>> a = np.zeros((2, 2))
>>> a
array([[ 0.,  0.],
       [ 0.,  0.]])
>>> a.ndim
2
>>> a.size
4
>>> a.shape
(2, 2)
>>> a.dtype
dtype('float64')
>>> b = np.zeros((3, 2, 4))
>>> b
array([[[ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.]],

       [[ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.]],

       [[ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.]]])
>>> b.ndim
3
>>> b.size
24
>>> b.shape
(3, 2, 4)
>>> b.dtype
dtype('float64')

最後に

お疲れ様でした。次回もNumpyについて書いていきます。