Python numpyの基本

Python学習【365日チャレンジ!】314日目のマスターU(@Udemy11)です。

今更ながら、はがきの値段が63円になっていてびっくりしてしまいました。

お菓子の懸賞に応募しようと思って、はがきを買いに行ったところ、はがき1枚が63円だったのでわかったんですが、ほんとはがきは使わないので、この値上がりにビックリです。

ちなみに、封筒の定形郵便も84円になっているので、郵送料は徐々に値上がりしているようです。

メルカリのヤマト便も600円から700円に上がっていたし、物価が下がることってないんでしょうか?

それでは今日も、Python学習を始めましょう。

昨日の復習

昨日は、データ解析によく使われるJupyterNotebookの基本を学習しました。

Jupyter Notebookは、Anacondaをインストールしていればすぐに使うことができます。

Pycharmと違い、セルと言われる塊で一つ一つのコードを処理して、処理結果を表示し、テキストや実行結果も保存することができました。

IpythonやGoogle Colaboratoryも同じ形式のファイルなので、同じように扱うことができました。

詳細については昨日の記事をごらんください。

今日は、機械学習を効率よく処理の高速化ができるnumpyモジュールを学習します。

array

arrayは配列で、標準ライブラリでも使えますが、1次元の配列しか扱うことはできませんが、numpy.arrayは多次元の配列を扱うことができます。

早速コードを見ていきましょう

import numpy as np
a = np.array([[1, 2, 3],[4, 5, 6]])
a
# array([[1, 2, 3],
#        [4, 5, 6]])

a[0]
# array([1, 2, 3])

a[1]
# array([4, 5, 6])

a[0][0]
# 1

最初にnumpynpとしてインポートします。

2行目は、リストであれば、リストの中にリストを入れ子にしている形になりますが、2行、3列の配列をaに代入して3行目でaを表示しています。

Jupyterの場合、コンソールではなく、ファイルのすぐ下に実行結果が表示されるので、#で出力結果を表示していますが、2行3列の配列が出力されます。

次にa[0]で1行目の値、a[1]で2行目の値を出力しています。

最後の出力a[0][0]は、1行目の1番目の値なので、1が出力されています。

shape

代入した配列に対して、shapeを実行すると、行列の値が返されます。

a.shape
# (2, 3)

ndim

ndimは、何次元の配列化を返すので、2が返されます。

a.ndim
# 2

dtype

タイプを調べるには、dtypeを使います。

a.dtype
# dtype('int64')

dtype.nameを実行すれば、int64だけが表示されますが、dpypeだけで実行しているので、タイプと名前が出力されています。

size

配列のサイズを出力するのがsizeで、いくつの値が入っているのかを出力するので、6が出力されています。

a.size
# 6

arange

指定した数値の範囲で規則正しく値を追加して配列を作ることができるのがarangeです。

np.arange(0, 20, 5)
# array([0, 4, 8, 12, 16])

0から4づつ足した値で20未満までの配列を作ってくれます。

小数点が入った値でも問題なく表示することができます。

np.arange(0, 2, 0.3)
# array([0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])

zeros

zerosは、行列の数を指定して、空の配列を作ってくれます。

np.zeros((3, 4))
# array([[0., 0., 0., 0.],
#        [0., 0., 0., 0.],
#        [0., 0., 0., 0.]])

小数点が入っていますが、小数点を表示させたくない場合は、dtypenp.int16を指定します。

np.zeros((3, 4), dtype=np.int16)
# array([[0, 0, 0, 0],
#        [0, 0, 0, 0],
#        [0, 0, 0, 0]], dtype=int16)

ones

onesは、0ではなく、作る配列のデフォルト値を1にします。

np.ones((3, 4))
# array([[1., 1., 1., 1.],
#        [1., 1., 1., 1.],
#        [1., 1., 1., 1.]])

nan

Noneと同じようなnanというものがあり、配列に入れることができます。

np.nan
# nan

[np.nan] * 5
# [nan, nan, nan, nan, nan]

linspace

先程、arangeで、指定した範囲で指定した値を追加していく配列を作りましたが、linspaceは、指定した範囲で、指定した数の配列を均等な間隔で作ってくれます。

np.linspace(0, 2, 5)
# array([0. , 0.5, 1. , 1.5, 2. ])

まとめ

Numpyの基本について、初歩の初歩を学習しましたが、ちょっとお腹がいっぱいになってきたので、とりあえず今日はここまでで終了したいと思います。

出力が行列で表示されるので、ある程度配列のイメージが掴みやすいのですが、普段エクセルで表の処理をしているので、ちょっと理解するのが難しいかもしれません。

以前、高田さんのデータサイエンス入門を学習したときもなんとなく理解したつもりになっていたのですが、あくまでなんとなくしか理解できていないので、酒井さんの講座を受講し終えたら、再度、データサイエンス入門を学習し直そうと思います。

それでは、明日もGood Python!