蛇使いな彼女BLOG
【第22回】 numpyを使った配列計算②-計算方法
2020.11.05
こんにちは、今回は前回に引き続きnumpyを使った計算についてのお話です。
list形式とnumpyのarray形式の違いに着目しながら
解説していこうと思います。
さて、私はVBAからPythonを始めたので配列に関してはリスト形式がポピュラーなものだと思いこんでいました。
ですが、Python内で計算を行うとき、リスト形式だとfor~の繰り返し構文を使わないといけないので、
場合によってはしばし面倒です…
また、予測やその他モデルを使った本格的な分析を行う際にも、入力データにarray型を要求されることがほとんどなので、ここで一つ、私自身心許ない知識ですが説明を行います (笑)
リスト形式の掛け算
まず、リスト形式の掛け算から見ていきましょう。
結果は↑のように、リスト配列がまるごと倍になっています。
これを、[100×2,200×2,300×2,400×2,500×2] のように
各項目ごとに×2の計算を行いたいときはfor~構文で処理を行います。
for~構文を使って記述するときちんと掛け算できていますよね!
for~構文は40行目、インデントを使って記述するのが一般的ですが、46行目のように、括弧でくくった内包記でも同じ結果がでます。
内包記の場合は“ans=[]”、”ans.append()”などの記述が必要ないのでお手軽ですね♪
※(ans=[] : 空のリストを生成 /ans.append() : listの末尾に追加)
array変換の計算
次はこの計算をnumpy.arrayで実行する場合。こちらをごらんあれ…
この通り、わざわざfor~の繰り返し処理を行わなくても掛け算ができます!
まあ正直、計算に関してlist/arrayどちらの方法を選ぶかは個人の好みですが、1つポイントがあります(^u^)
前回の記事で、array形式は自由に配列の変形をすることが可能と書きましたが、長さの違うものをarray配列として扱うこと、またこれを一つに結合するという処理はできません
例えばこのように…
長さが異なる配列(arr)はarrayに変換されずlistのまま出力されています。
もちろん変形にも支障があります。
[[1,2,3,4],[5,6,7],[8,9,10,11]] ←長さが3ということになっているのでエラー表示が出ています。
これは、実際の生データを使って分析を行う際に気をつけることでもあります。
特に機械学習用などを目的としている場合は、データの前処理や整形を行う必要もでできますしね(゜-゜)
例えば一ヶ月間の測定データがあったとして、日毎に測定できたデータの数がバラバラな場合、データセットの行列を揃える必要がありますので、私はまず、DataFrameやlist形式にしてからfor~文等でデータのクレンジング(クリーニング)処理を行い、長さを調整してからarray形式に直しています。
意外とめんどくさい作業なんですよねこれが(笑)
…と、まあ
長くなりましたが今回はこれにて!