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
最初にnumpy
をnp
としてインポートします。
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.]])
小数点が入っていますが、小数点を表示させたくない場合は、dtype
にnp.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!