はじめに
こんにちは!
そろそろデータ解析に必要な知識を一旦整理しようと思いまして、この記事を書いています。
データサイエンティストになりたい人は避けて通れないライブラリたちを、僕自身の復習も兼ねて紹介していきたいと思います。
numpy,pandas,scikit-learnなど色々とありますが、第一弾はnumpyです!
この記事が少しでもお役に立てば、ぜひいいね!の方よろしくお願いいたします!
numpyってなんだ?
「そもそもnumpyってなんやねん」という声がどこからともなく聞こえてきそうなので説明します。
numpyとはPythonで学術計算をするためのライブラリです。
簡単な計算ならPythonでもゴリ押しでいけますが、いつか限界がきてしまいます。
そこで威力を発揮するのがnumpyです。
計算を楽にしてくれたり、高速化してくれるのがnumpyなので、これから機械学習を始めたいという方は特に必須となっています。
筆者の開発環境
・macOS Mojave バージョン10.14.3
・MacBook Air(11-inch, Early 2015)
・プロセッサ 1.6 GHz Intel Core i5
・Python 3.7.1
これで問題なく動きました!
numpyの前に。。。
まずnumpyを勉強し始める前に知っておくべきことがあります。それはPythonのリストや配列に関する簡単な知識& 行列に関する知識です。
ある程度でいいのでリストや配列について知っておかないとnumpyの内容が全く理解できないと思われます(涙)
[ ]でくくるとリストが作れる、リストの中身は0番目から数えるなどそのくらいでいいので、忘れた人もしくは全く知らない人はザっとおさらいしておきましょう。
数学の分野である行列も少し勉強しておきましょう。
「この行列はA行B列である」くらいのほんとのほんとに基礎の部分でいいので、ネットなり参考書なりで勉強しておくと理解が深まります。
numpyの使い方
jupiter notebookでもなんでもいいのでまずはコードを入力しましょう。
import numpy as np
これでnumpyがインポートでき、計算が可能になりました。
ではnumpyのアレイ(配列のこと)を作ってみましょう。
array1 = np.array([[1,2,3],[4,5,6]])
これでnumpyのアレイが出来上がりました。表示してみましょう。
array1
>>>array([[1, 2, 3],
[4, 5, 6]])
こんな感じでちゃんと出来上がっていますね。
ではarray.shapeとarray.dtypeでアレイの形状&タイプを確認してみます。
array.shape
>>>(2,3)
array.dtype
>>>dtype('int64')
これで2行3列の整数型のアレイであることがわかりました。
このように自分が選んだ数字を入れてアレイを作れますが、他にも様々なアレイの作り方があります。
np.zeros()
#0だけのアレイが作れる。引数には0の個数を入力orもし引数にタプル型で(X,Y)と入れたらX行Y列の0だけでできた配列が作れる。
np.ones()
#1だけのアレイが作れる。np.zerosと使い方は同じ。
np.empty()
#中身が空のアレイが作れる。
np.eye(X)
#X行X列の単位行列が作れる。
np.arange(X)
#0からXの一つ前の数字までのアレイが作れる。Xが5なら0から4までのアレイ。
np.arange(5,50,2)
#引数をこのようにしたら5から49まで2つ飛ばしのアレイが作れる。
np.arange(9).reshape(3,3)
#0から8までのアレイを3行3列で作れる。
簡単なアレイの作り方としてはこんな感じでしょうか。
では、このようにして作ったアレイを用いて計算する方法に移ります。
まず、アレイを二つ用意しましょう。
array1 = np.array([[0,1,2],[3,4,5]])
array2 = np.array([[6,7,8],[9,10,11]])
具体的な計算方法は以下のようになります。
#加減乗除全てアレイの各要素に対応して行われる。
array1 + array2
>>>array([[ 6, 8, 10],
[12, 14, 16]])
array1 - array2
>>>array([[-6, -6, -6],
[-6, -6, -6]])
array1 * array2
>>>array([[ 0, 7, 16],
[27, 40, 55]])
array1 / array2
>>>array([[0. , 0.14285714, 0.25 ],
[0.33333333, 0.4 , 0.45454545]])
続いてはアレイの添え字についてです。
アレイの特定の位置の数字を取り出したい時などに使えます。
array = np.arange(0,5)
array
>>>array([0,1,2,3,4])
array[2]
#アレイの要素の数え方は左から0番目、1番目、、、[2]は2番目という意味
>>>2
array[1:4] #アレイの1番目から4番目の手前(つまり3)まで抜き出すという意味
>>>array([1,2,3])
array[:] #全ての要素を抜き出す
>>>array([0,1,2,3,4])
1次元のアレイに対してはこのような操作をします。
では、続いて2次元のアレイではどのようになるかみていきましょう。
array2d = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
#3行3列の2次元アレイに対して次のような操作を行う。
array2d[1] #一番目のリストが取り出される
>>>[4,5,6]
array2d[1][2] #1番目のリストの2番目の要素が取り出される
>>>6
#array2d[1,2]と書いても同じ
array2d[:2,1:] #1番目までのリストの1番目以降の中身が取り出される
>>>array([[2,3],[5,6]])
終わりに
いかがだったでしょうか?
これらはnumpyの本当に本当の基礎部分にすぎません。
これ以外にも便利な要素がたくさんあります。
そのためにみなさんにぜひググってほしいキーワードを上げておきます。
・array.transpose
・array.swapaxes
・array.sort()
・np.dot()
・np.sqrt()
・np.exp()
・np.add()
・np.maximum()
・np.sum()
・np.mean()
・np.std()
・np.var()
・np.unique()
ザっと以上です。データ解析をする上で必要なものばかりだと思うのでぜひ調べてみてください!自学自習がやっぱり1番成長できます。
最後に、僕が所属しているツカザキ病院眼科AIチーム(Deep Oculus)のページも見ていただけると嬉しいです!
ツカザキ病院眼科AIチーム Deep Oculus
ご一読ありがとうございました!