Youtubeでも掻動䞭

チャンネル登録しおくれたら喜びたす。
リンクはフリヌです。共有・拡散は倧歓迎

このボタンで簡単にチャンネル登録
PR

【Python】埌から配列の芁玠を足すために空の配列が欲しい堎合

How-to-create-an-empty-array-with-list-and-numpy-eyecatch

 今回は、Pythonのちょっずしたテクニックに぀いおご玹介したす。
よく蚭定ファむルなんかのテキストデヌタを䜿っお、
アプリケヌションの自由床をあげる堎合っおありたすよね

 その堎合、䟋えば蚭定ファむルに曞いおある数字に合わせお
メむンプログラムの構成を可倉にしおおく必芁があったりしたす。

 具䜓的には、蚭定ファむルに蚘茉した内容を
いったん読み蟌んでそのパラメヌタでアプリケヌションを動かしたす。
䟋えばこんな蚭定ファむルがあったずしたす。

PosXY
00100
11080
24090
390110
蚭定ファむルのむメヌゞ

 X,Y方向の座暙をPosずいう名前でナンバリングしおいたす。
ステヌゞなんかを動かす時のパラメヌタをむメヌゞしおいたす。

 では、この蚭定ファむルはPos3たであるので、
アプリケヌション偎で読み蟌むずきは4行目たで読み蟌めば足りたすね。
ただし….Posが増えた堎合に゜ヌスコヌド䞊の4を5に倉えおいったりしたすか
ずいう話ですね。そんな゜ヌスコヌドにするこずは通垞ありえたせん。

 そんな時に䜿えるのが「空(から)の配列」です。
倧きさを決めおいない空の配列にどんどん倀を远加するこずで、
蚭定ファむルの蚘茉内容に応じお倧きさが可倉になりたす。
そんな空の配列に぀いおご玹介しおいきたす。

この蚘事を読むこずでわかるこず

埌から倧きさの倉曎可胜な、空の配列の䜜り方がわかる。

自己玹介

サラリヌマンしおたす。

䞻に工堎(生産珟堎)で䜿甚する怜査装眮のアプリケヌション開発しおたす。

ヒトの䜜業を自動化しお簡略化するアプリケヌションを日々開発䞭。

2022幎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()ずするず゚ラヌになりたす。匕数が足りないからですね。

ただの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#などのコンパむル⇒実行ファむルずしお、
実行ファむルを䜿うような環境だず、毎回コンパむルするのは時間の無駄ですから…
それに゜ヌスコヌドを誰でもいじれるわけではなくおも、
蚭定ファむルくらいならいじれる人ならいたすからね。

 芁玠数が䞍確定の堎合はぜひこの初期化で、
空の配列を䜜っおみおください。䟿利さがわかるず思いたす。

コメント

タむトルずURLをコピヌしたした