今回は、Pythonのちょっとしたテクニックについてご紹介します。
よく設定ファイルなんかのテキストデータを使って、
アプリケーションの自由度をあげる場合ってありますよね?
その場合、例えば設定ファイルに書いてある数字に合わせて
メインプログラムの構成を可変にしておく必要があったりします。
具体的には、設定ファイルに記載した内容を
いったん読み込んでそのパラメータでアプリケーションを動かします。
例えばこんな設定ファイルがあったとします。
Pos | X | Y |
---|---|---|
0 | 0 | 100 |
1 | 10 | 80 |
2 | 40 | 90 |
3 | 90 | 110 |
X,Y方向の座標をPosという名前でナンバリングしています。
ステージなんかを動かす時のパラメータをイメージしています。
では、この設定ファイルはPos3まであるので、
アプリケーション側で読み込むときは4行目まで読み込めば足りますね。
ただし….Posが増えた場合にソースコード上の4を5に変えていったりしますか??
という話ですね。そんなソースコードにすることは通常ありえません。
そんな時に使えるのが「空(から)の配列」です。
大きさを決めていない空の配列にどんどん値を追加することで、
設定ファイルの記載内容に応じて大きさが可変になります。
そんな空の配列についてご紹介していきます。
後から大きさの変更可能な、空の配列の作り方がわかる。
Youtubeチャンネルにさまざまな動画を上げています。
↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓
本ブログはアフィリエイトを用いた広告を掲載しています。
空の配列を使ってやりたいこと
やりたいことのおさらいですが、
Pythonを使った配列で、最初に要素の数を指定せず、
後から要素を追加していくことになります。
よく配列の初期化なんて呼ばれることもあります。
標準のListの場合、numpyの場合でそれぞれ違います。
実は、ここで重要なのですが、numpyの場合、
空の配列(ndarray)は作成できません。
重要なお話でしたので先にお伝えしておきました。
それでは、Listの場合、numpyの場合それぞれで空の配列の作成
(配列の初期化)をやっていきましょう。
Python標準のListで空の配列を作る方法。
まずはPython標準のListで空の配列を作ってみましょう。
Python標準と表現しているのは、pipを使ってモジュールをインストールする
必要が無く、初期状態から使えることを意味しています。
このListで空の配列を定義するには、こうなります。
testList = []
今回、空の配列の名前はtestListとしました。
このように、[]とするだけで、空の配列として定義することができます。簡単ですね。
試しに値を入れてみましょう。
testListに3個要素数を追加してみます。
要素の追加はappendを使用します。
testList = []
testList.append(3)
print(testList)
このようにすることで、最後のprintのときに[3]が出てくるのが確認できると思います。
注意点としては、この3は、数字の3が配列として入っているわけではなく、
「要素が3個」という意味です。
ぱっと見だと3という数字が入っていると勘違いすることもあるので、注意が必要です。
numpyで空の配列を作る方法?無いので別の方法を紹介。
少し前のところでお伝えした通り、
残念ながらnumpyの配列を初期化して空の配列を作ることはできません。
numpyの配列は、ndarrayという名前ですが、
このndarrayの初期化には要素数が必要です。
要素数を指定しないで空の状態で作りたくても作れません。
実は、numpyには配列の初期化として、
ゼロ埋めや、1埋め、任意の値で埋めたりする機能はあります。
しかし、それぞれの機能で必ず要素数は指定する必要があります。
例えば、emptyを使って初期化するとき。
numpy.empty()で初期化← 一見すると、list = []と似たように見えますよね?
ただし、引数には配列のshape。いわゆる行・列の要素数を指定する必要があります。
実際numpy.empty()とするとエラーになります。引数が足りないからですね。
numpyで空の配列が作れないので、Listから変換する。
numpyで空の配列が作れないことは先ほどお伝えしました。
ですので、numpyでは初期化せずに、Listで初期化して、
要素が確定したところでnumpyの配列に変換してあげる方法がいいと思います。
例えば、ソースコード上で要素数を指定せずに、
設定ファイルの要素数で可変にする場合は、こんな感じになります。
import numpy
testEmpty = []
testEmpty.append(5)
np_array = numpy.ndarray(testEmpty)
print(np_array)
testEmptyというListが空のリストです。
この中に5個要素を.appendで追加しています。
この5という数字は、外部から読み込んだ設定ファイル(.csvでも.txtでも。)から
取得すればいいので可変です。
最後にtestEmptyというListをnumpyで使えるように
ndarrayに変換しています。
今回のまとめ:空の配列を作るには[]で指定すればOK
今回は、空の配列の設定の方法について解説してみました。
要素数がいつも変わらないようなデータを取り扱う場合は固定の数でいいわけですが、
実務上そんなことはまれだと思います。
それに、途中で必要な要素数が変更になったくらいで、
ソースコードをいじるのはあまり上手ではないですよね。
そこは設定ファイルをいじるだけで対応したほうがスマートです。
C++やC#などのコンパイル⇒実行ファイルとして、
実行ファイルを使うような環境だと、毎回コンパイルするのは時間の無駄ですから…
それにソースコードを誰でもいじれるわけではなくても、
設定ファイルくらいならいじれる人ならいますからね。
要素数が不確定の場合はぜひこの初期化で、
空の配列を作ってみてください。便利さがわかると思います。
コメント