基礎Python:numpyを少し学習してみる 1

numpyの高度なプログラミングをする前に、やはりnumpyを少し勉強しておく必要があることを痛感したので、今更ながらnumpyの基礎をおさらいすることにした。

スポンサーリンク

NumpyとNumpy Array

python nativeのrangeとnp.arangeの速度を比較してみる。

L = range(1000)
%timeit [i**2 for i in L]
225 µs ± 1.31 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
import numpy as np
a = np.arange(1000)
%timeit a**2
907 ns ± 4.58 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

numpyの方が遥かに処理が高速なのが一目瞭然だろう。

a = np.arange(10) #0〜9までの10個の数字のアレイ
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
b = np.arange(1, 9, 2) #1から前の数字に2を足して9は除外
b
array([1, 3, 5, 7])
c = np.linspace(0, 1, 6) #0〜1まで6個の数字を抽出
c
array([0. , 0.2, 0.4, 0.6, 0.8, 1. ])
d = np.linspace(0, 1, 5) #0〜1まで5個の数字を抽出
d1 = np.linspace(0, 1, 5, endpoint=False) #1は除く
d,d1
(array([0.  , 0.25, 0.5 , 0.75, 1.  ]), array([0. , 0.2, 0.4, 0.6, 0.8]))
a = np.ones((3, 3))  # reminder: (3, 3) is a tuple
a
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])
b = np.zeros((2, 2))
b
array([[0., 0.],
       [0., 0.]])
c = np.eye(3)
c
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
d = np.diag(np.array([1, 2, 3, 4]))
d
array([[1, 0, 0, 0],
       [0, 2, 0, 0],
       [0, 0, 3, 0],
       [0, 0, 0, 4]])

numpyのdefault data typeはfloating point

a = np.ones((3, 3))
a.dtype
dtype('float64')
a = np.array([1, 2, 3]) #小数点無しだとint型
a.dtype
dtype('int64')
b = np.array([1., 2., 3.]) #小数点有りだとfloat型
b.dtype
dtype('float64')
c = np.array([1, 2, 3], dtype=float) #データ型は指定可能
c.dtype
dtype('float64')
d = np.array([1+2j, 3+4j, 5+6*1j]) #複素数型
d.dtype
dtype('complex128')
f = np.array(['Bonjour', 'Hello', 'Hallo',]) #string型
f.dtype
dtype('<U7')

numpy arrayの視覚化

import matplotlib.pyplot as plt
x = np.linspace(0, 3, 20)
y = np.linspace(0, 9, 20)
plt.plot(x, y)       # line plot
plt.show()
plt.plot(x, y, 'o')  # dot plot   
plt.show()
image = np.random.rand(30, 30)
plt.imshow(image, cmap=plt.cm.hot) 
<matplotlib.image.AxesImage at 0x7f4ee06e34a8>
image = np.random.rand(30, 30)
plt.imshow(image, cmap=plt.cm.hot) 
plt.colorbar()
<matplotlib.colorbar.Colorbar at 0x7f4ee060af98>
参考サイトscipy-lectures.org