「Python 3 エンジニア認定データ分析試験」の試験勉強日記
勉強開始
次に狙う資格は「Python 3 エンジニア認定データ分析試験」。
勉強ノート代わりに、勉強したことを記録していきます。
教材は、主教材として提示されているこちら。
Pythonによるあたらしいデータ分析の教科書 翔泳社 寺田学/著 辻真吾/著 鈴木たかのり/著 福島真太朗/著 価格:2,728円 |
numpyのndarrayは、スライスの結果は参照になる(2020/7/6)
numpyのndarrayオブジェクトってのは、多次元配列を扱う上で重宝され良く使われてるようです。
Pythonは標準でも「リスト」という配列を扱うための標準のオブジェクトがありますが、ndarrayと仕様が違うところがあります。
スライスした結果が
- リストだと、コピーが渡される
- ndarrayだと、参照が渡される
リストの場合
a = [1,2,3]
b = a[:]
ここまでで、a,b はともに[1,2,3]
a[2] = 30とすると
a = [1,2,30]
b = [1,2,3] bの値は変わらない
ndarrayの場合
a = np.array([1,2,3])
b = a[:]
ここまでで、a,bはともに[1,2,3]
a[2] = 30 とすると
a =array( [1,2,30])
b = array([1,2,30]) ※bにはaの参照が渡されているので、bの値も変わる。
小さいようで大きな違い。
データの次元数を変えるとか、必要なデータ箇所だけスライスするといった処理は機械学習で頻繁に行いそうなので、注意ですね。
スライスの考え方も、使いこなすと相当に便利そう。
c = array([[1, 2, 3],
[4, 5, 6]]) としたときc[:,2] とすると、○行◇列 のうち○は全部の行(: で指定)、◇はインデックス2に並ぶ数値を取得する、となるので、結果は
array([3,6]) となる。
なんとなーくで、「:」を使ったスライスの処理を見てきた気がするが、しっくりきました。
linspaceによる均等割データ、n分割ならn+1が第三引数(2020/07/07)
np.linspace(0,1,5) とすると、
array([0. , 0.25, 0.5 , 0.75, 1. ])
0~1の間を、4分割し、最初の0も含めて配列にしていますね。
第三引数に指定した「5」は、5分割という意味ではなく、結果の配列の要素数を表す。
ちょっとややこしいけど、「均等に4分割したい~先頭の数値も入るから、第三引数は5ね」と押さえておく必要ありそうです。
Numpyメモ
#1から始まり、11より小さい範囲で、2おきのarrayを作成
in
np.arrange(1,11,2)
out
array([1, 3, 5, 7, 9])
#単位行列を作成
in
np.eye(3)
out
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])