NumPy

NumPyは高速多次元オブジェクト、で機械学習をする際にはさけて通れません。Pandasとの違いが判らないと言われますが、多次元的にできるのがNumpyと覚えておいてもらえればいいと思います。いずれにしても始めて行きましょう。

目次

Numpyを覚えたい(定義する配列について)

Numpyには便利な機能がいろいろそろっていますが、Pythonの中のライブラリとしてNumpyが存在します。下記がPythonを含めたライブラリの構成となっています。

リストlist基本の構造、異なるデータ種類も入れられる
タプルtuplelistと同種類だが変更が付加
辞書dickeyとvalueが組み合わさったデータの集合 順序は持たない
配列ndarrayNumpyが扱うデータ構造、数値のみを要素に持つことが多い
数値以外も混ぜる場合はPandasを使用したほうがよい

Numpy配列をつくりたい

配列(array)を作る関数の紹介

リストから配列を作る np.array([1,2,3,4])
数値の範囲を指定して配列を作る np.arrange([1,5])
作成した配列は1次関数となります。

import numpy as np

array1 = np.array([1,2,3,4,5,6,7,8])
array2 = np.arrange([1,9])


結果は一緒になるはずです。
Pythonあるあるですがarrangeは最初の数字は入りますが、最後の数字は入りません。

2次関数に変える場合はresyapeメソッドを使用します。
※メソッドは別途この章で詳細は紹介します
array_change = array1.reshape(4,2)で2行4列の配列に変わります。

array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])

となると思います。

ちなみに、この時のデータ型はtype関数を使って調べることができます。
type(array1)で調べてみてください。変数のデータ型ははarray1.dtypeで調べます。

ndarrayプロパティを取り出したい

プロパティ(基本)を知りたい

ndarrayのプロパティは
array1.ndim のように「オブジェクト.プロパティ名」で取り出すことができます。

プロパティ説明
ndim次元数
shape行列数
dtypeデータ型

また、転置行列はTで取り出すことができます。
下記でarray_change1とarray_change2は同じになります。
これは知っておくと便利ですよ。

import numpy as np

array1 = np.array([1,2,3,4,5,6,7,8])
array_change = array1.shape([4,2])
array_change1 = array_change.shape([2,4])
array_change2 = array_change.T

プロパティ(応用)を知りたい

これはめったに使用しないかと思いますが紹介しておきますね。

dataメモリビューオブジェクト
flagsメモリレイアウトに関する情報
size全要素数
itemsize要素のデータサイズ
nbytes全データのサイズ

ndarrayメソッド一覧

メソッド(基本)を知りたい

ndarrayの関数は
array1.mean のように「オブジェクト.関数()」で実行することができます。

メソッド(関数)説明
sum()配列の和を指定された軸方向に計算し結果の配列を返します
mean()配列全要素の平均
std()配列全要素の標準偏差
var()配列全要素の分散
min()配列全要素の最小値
max()配列全要素の最大値
argmin()最小の要素のインデックス
argmax()最大の要素のインデックス
※上記は勉強次第どんどん足していきますね

このようになっているので活用していきましょう。

メソッド(応用)を知りたい

上記のメソッドを応用的に使用する方法を紹介しておきます。
メソッドを行,列に指定することができます。

import numpy as np

array1 = np.array([1,2,3,4,5,6,7,8])
array_change = array1.shape([4,2])
sum1 = array_change.sum
sum2 = array_change.sum(axis=0) #計算軸を行方向に指定(axis=0)
sum3 = array_change.sum(axis=1) #計算軸を列方向に指定(axis=1)

ndarrayの構造変更をしたい

ndarrayは多次元を配列であるため次元配列を変更する、もしくは連結方法をご紹介します。

行方向への連結np.vstack([配列1,配列2])
列方向への連結np.hctack([配列1,配列2])
次元の追加np.array([配列1,配列2])
次元の変更np.reshape(行数,列数)
次元の変更(1次元への変更)np.flat

csvからの読み書きをしたい

さあそれではcsvの読み書きをしていきましょう。
今回は政府の各県の人口推移データから持ってきましょう。
都道府県名、各年のインデックスは消してあります。
「jinkou_numpy1.csv」
上記をダウンロードして好きな名前に変更してもらって下記を実行してみてください。

使い方の例を一つ下記に示しておきます。

import numpy as np
data = np.loadtxt("jinkou_numpy1.csv",delimiter = ",",dtype='int64')

ここではファイル名を jinkou_numpy2 にしています。
よく出るエラーとしてcsvファイルの文字型がおかしいことや、
数値に””(ダブルクォーテーション)がついているために読み込めない場合があります。
注意しましょう

書き出しは下記となります。
黄色アンダーラインの部分は好きな名称にしてくださいね。

import numpy as np
data = np.savetxt(“jinkou_numpy2.csv”,delimiter = “)

データ型

Numpyを使う上でデータ型は避けて通れないので紹介しておきます

Numpyデータ型の種類をしりたい

bool真偽型
int○○ビット符号付整数(○:8,16,32,64)
unit○○ビット符号なし整数(○:8,16,32,64)
float○○ビット浮動小数点(○:16,32,64)
complex○○ビット複素数(○:64,128)

データ型は配列生成時に指定することができます

array_data_int64 
  = np.array([[1,2,3,4,5],[6,7,8,9,10]], dtype = 'int64')

Numpyデータ型の取り出し、変更をしたい

データ型の確認dtype
データ型の指定dtype
データ型の変更astype
タイトルとURLをコピーしました