Skip to content

Latest commit

 

History

History
148 lines (110 loc) · 3.65 KB

numpy_1.md

File metadata and controls

148 lines (110 loc) · 3.65 KB

Numpy

公式ドキュメント

Numpyとは

Pythonの数値計算用パッケージで、以下の機能をもつ。

  • 多次元配列操作
  • 線形代数

内部はC/C++とFortranで実装されており、高速に動作する。また配列の中身とインデックスとを別々に管理しており、効率的なメモリ管理を行っている。

Numpyを効率よく使用する方法については以下が参考になる。

http://ipython-books.github.io/featured-01/

使い方

まずnumpyをimportする。npをエイリアスとすることが多い。

>>> import numpy as np

numpy.xxxとnumpy.ndarray.xxxについて

Numpyのドキュメントを読むとnumpy.xxxnumpy.ndarray.xxxとがあることがわかる。 以降ではnumpy.xxxについて説明するが、通常同じ機能を持つメソッドがnumpy配列のインスタンスメソッドnumpy.ndarray.xxxとして定義されている。

>>> x = np.array([1,2,3], np.float32)
>>> x
array([ 1.,  2.,  3.], dtype=float32)
>>> np.sum(x)
6.0
>>> x.sum()
6.0

配列の生成

numpy.array

listまたはnumpy配列を元に配列を生成する。

>>> x = np.array([[1,2],[3,4]], dtype=np.float32)
>>> x
array([[ 1.,  2.],
       [ 3.,  4.]], dtype=float32)

dtypeで要素の型を指定する。Chainerを使用する時には通常整数はnp.int32、浮動小数はnp.float32を指定する。

dtypeを指定しない場合は、元のnumpy配列またはlistの型になる。

numpy.asarray

numpy.asarrayとほとんど同じだが、生成する配列が入力した配列と同じ場合にはコピーを生成しない。

>>> x = np.array([1,2,3], dtype=np.float32)
>>> y = np.asarray(x)
>>> x is y
True

numpy.copy

配列のコピーにはnumpy.copyを使う

>>> x = np.array([1,2,3], dtype=np.float32)
>>> x
array([ 1.,  2.,  3.], dtype=float32)
>>> y = np.copy(x)
>>> y
array([ 1.,  2.,  3.], dtype=float32)
>>> x is y
False

numpy.zeros, numpy.ones, numpy.full

numpy.zerosを使うと要素を0で埋めた配列を生成できる。

>>> x = np.zeros((2,3), dtype=np.float32)
>>> x
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.]], dtype=float32)

numpy.onesを使うと要素を1で埋めた配列を生成できる。

>>> x = np.ones((2,3), dtype=np.float32)
>>> x
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.]], dtype=float32)

numpy.fullを使うと要素を指定した値で埋めた配列を生成できる。

>>> x = np.full((2, 3), 10, dtype=np.float32)
>>> x
array([[ 10.,  10.,  10.],
       [ 10.,  10.,  10.]], dtype=float32)

numpy.zeros_like, numpy.ones_like, numpy.full_like

別の配列と同じ形状で中身を0, 1, または指定した値の配列を生成できる。

>>> a = np.asarray([[1,2],[3,4]], dtype=np.float32)
>>> a
array([[ 1.,  2.],
       [ 3.,  4.]], dtype=float32)
>>> x = np.zeros_like(a)
>>> x
array([[ 0.,  0.],
       [ 0.,  0.]], dtype=float32)
>>> x = np.ones_like(a)
>>> x
array([[ 1.,  1.],
       [ 1.,  1.]], dtype=float32)
>>> x = np.full_like(a, 10)
>>> x
array([[ 10.,  10.],
       [ 10.,  10.]], dtype=float32)

numpy.arange

等差数列を生成する。開始、終了、間隔を指定することができる。開始位置は省略すると0、間隔は省略すると1になる。

>>> x = np.arange(5, dtype=np.int32)
>>> x
array([0, 1, 2, 3, 4])
>>>
>>> x = np.arange(3, 9, 2, dtype=np.float32)
>>> x
array([ 3.,  5.,  7.], dtype=float32)