kharukaのブログ~お金と技術とキャリア~

Edu Fin~金融×教育~若いうちからお金について学ぶってだいじ!学んだテクノロジーはみんなの財産。過去、現在、将来の人生についてのブログ

NumPy-アレイを使ったデータ処理-

入門 Python 3

入門 Python 3

【前提条件】

OS:Windows 10 64-bit, version 1607

Anaconda 4.4.0(Python 3.6 version 64-bit)インストー

NumPyのインストー

【手順概要】

1.コマンドプロンプトでIPython Notebookを起動します。

2.アレイを使ったデータ処理

【手順】

1.コマンドプロンプトでIPython Notebookを起動します。

ipython notebook

2.アレイを使ったデータ処理

2.1.numpyをインポートします。

import numpy as np

2.2.グラフ描画用のmatplotlib.pyplotをインポートします。ノート上にグラフ表示するために%matplotlib inlineを記述します。

import matplotlib.pyplot as plt
%matplotlib inline

2.3.点を配列で表現します。

points=np.arange(-5,5,0.01)
dx,dy=np.meshgrid(points,points)
dx
dy

f:id:kharuka2016:20170724035207p:plain

2.4.数値だけでは分かりづらいのでグラフを描画してみます。

plt.imshow(dx)
plt.imshow(dy)

f:id:kharuka2016:20170724035631p:plain

2.5.もう少し複雑なグラフを描画してみます。

z=(np.sin(dx)+np.sin(dy))
plt.imshow(z)

f:id:kharuka2016:20170724035649p:plain

2.6.タイトルやカラーバーをつけることも出来ます。

plt.imshow(z)
plt.colorbar()
plt.title('Plot for sin(x)+sin(y)')

f:id:kharuka2016:20170724035718p:plain

2.7.配列AとBを比較し、conditionがTrueならばAをFalseならばBの値を返しています。

A=np.array([1,2,3,4])
B=np.array([1000,2000,3000,4000])
condition=np.array([True,True,False,False])
answer=[(a if cond else b) for a,b,cond in zip(A,B,condition)]
answer
Out:[1, 2, 3000, 4000]

2.8.同様のことがwhereを使っても出来ます。

answer2=np.where(condition,A,B)
answer2
Out:array([   1,    2, 3000, 4000])

f:id:kharuka2016:20170724040417p:plain

2.9.whereを使って配列の要素が0より小の場合は0、その他の場合は要素の値を表示するようにも出来ます。

arr = randn(5,5)
np.where(arr < 0,0,arr)
Out:array([[ 0.        ,  0.        ,  0.93383019,  0.        ,  0.32984702],
          [ 0.15788724,  0.8993592 ,  0.        ,  0.        ,  0.        ],
          [ 0.        ,  0.        ,  0.        ,  0.        ,  0.        ],
          [ 0.67750279,  0.        ,  0.        ,  0.25983106,  1.09274892],
          [ 1.76261425,  0.        ,  0.        ,  0.        ,  0.91529107]])

2.10.行列の要素の和を求めるsum、平均を求めるmean、標準偏差を求めるstd、分散を求めるvarなどがあります。

arr=np.array([[1,2,3,],[4,5,6],[7,8,9]])
arr.sum()
Out:45
arr.mean()
Out:5.0
arr.std()
Out:2.5819888974716112
arr.var()
Out:6.666666666666667

f:id:kharuka2016:20170724044824p:plain

2.11.any(少なくとも一つ)とall(全て)で真偽の判定も出来ます。

bool_arr=np.array([True,False,True])
bool_arr.any()
bool_arr.all()

f:id:kharuka2016:20170724045458p:plain

2.12.sortで並び替えも出来ます。

arr=randn(5)
arr
Out:array([ 0.55264177, -0.33466689, -2.07526054,  1.4271714 , -0.81139511])
arr.sort()
arr
Out:array([-2.07526054, -0.81139511, -0.33466689,  0.55264177,  1.4271714 ])

2.13.uniqueで重複する要素を除去出来ます。in1dで指定した配列(countries)に入力した要素があるか真偽判定してくれます。

countries=np.array(['France','Japan','USA','Russia','USA','Mexico','Japan'])
np.unique(countries)
Out:array(['France', 'Japan', 'Mexico', 'Russia', 'USA'], 
      dtype='<U6')
np.in1d(['France','USA','Swaden'],countries)
Out:array([ True,  True, False], dtype=bool)

f:id:kharuka2016:20170724045513p:plain

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

参考:

udemy 実践Pythonデータサイエンス

www.udemy.com

wshinya.hatenablog.com