環境システム株式会社公式HP

〒660-0083 兵庫県尼崎市道意町7-1-3
尼崎リサーチ・インキュベーションセンター512

アイコン06-6657-5130

アイコンsales@hydrolab.co.jp

お問い合わせ

アイコン06-6657-5130

アイコンsales@hydrolab.co.jp

お問い合わせ

蛇使いな彼女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形式に直しています。

意外とめんどくさい作業なんですよねこれが(笑)

…と、まあ
長くなりましたが今回はこれにて!

pagetop