データ分析や図を作る時に複数あるデータを扱うことがありますよね。このデータをわかりやすくするのが配列です。Pythonには配列の種類がいくつかあるので、Pythonの配列をどのように使い分けたら良いのか分からないことも多いはず。
しかし、配列はPythonを習得するためには欠かせない、とても大切な基礎の1つです。そして、配列はAI(人工知能)やデータサイエンスなどに挑戦するときに必ず活躍するテクニック。この記事では、そんなPythonの配列について1つずつていねいに学習していくので、バッチリ理解できるに違いありません。この記事を参考に、今のうちにPythonの配列をしっかりとマスターしましょう!
そこで今回は、Pythonの配列とその種類、適切な使い分け方のポイントについてお伝えします。
Pythonの配列とは
それではまず、「配列」の意味から確認していきましょう!配列とは、いくつものデータを同時に扱うことができる形式のことです。他のプログラミング言語では配列と呼ぶことが一般的ですが、Pythonでは「リスト」と呼びます。
これだけではまだ、Pythonのリスト(配列)について理解しづらいかもしれませんので、実際のコードを見てみましょう。たとえば、好きな果物をデータとして扱いたい場合、リストを使わないで表すとこのようなコードになります。
fruit_1 = apple
fruit_2 = orange
fruit_3 = lemon
fruit_4 = grape
fruit_5 = strawberry
print(fruit_1, fruit_2, fruit_3, fruit_4, fruit_5)
# apple orange lemon grape strawberry
##############################
上の例だと変数を5つしか使っていませんが、もし好きな果物がたくさんあるとしたら、いちいち多くの変数を用意しなければならないのは大変でしょう。
しかし、リストを使うことでこのような負担を減らし、簡単にいくつものデータを扱うことができるようになります。それでは、リストを使う場合のコードを見てみましょう。
fruits = [apple, orange, lemon, grape, strawberry] # リスト
for fruit in fruits:
print(fruit) # apple orange lemon grape strawberry
##############################
このように、リストを使うとたった1行でデータを扱うことができるようになりました。リストでまとめれば、とても便利ですよね。
Pythonの配列の種類
Pythonで配列を扱うときに便利な形式は、こちらの2種類になります。
- 標準機能の「リスト」
- NumPyの「ndarray」
先ほどのコードではリストを紹介しましたが、実は、Pythonには配列を扱うときに便利なもう1つの形式「ndarray」があります。ndarrayはリストと比較すると様々なメリットがあり、Pythonを使う際には欠かせない存在。
ndarrayはPythonの標準機能ではないため、「NumPy」というライブラリ(Pythonをより便利にするためのツール)をインポートすると使えるようになります。
「ライブラリ」や「インポート」という言葉を目にすると、少し不安になってしまいますよね。しかし、心配する必要はありません。NumPyのインポートはとても簡単にできるので、一緒に挑戦しましょう。
まずは、ターミナルでNumPyをインストールします。
$ pip install numpy
##############################
import numpy as np
##############################
もしかすると、「as np」のフレーズが気になってしまうかもしれません。しかし、as npの意味はとても簡単で、「NumPyを使うときにいちいちnumpyと書くのが面倒なので、省略してnpと書くことにしたよ。」という意味です。もちろんas npは書かなくても良いのですが、習慣的にas npと省略することが多いので、ここでは省略します。
これで、NumPyのインポートが完了しました!ちなみに、リストはPythonの標準機能なので、インポートの必要はありません。
Pythonの配列の種類について理解したところで、次は基本的な配列の使い方を具体的に見ていきましょう!
配列の作成方法
# リスト
fruits = [‘apple’, ‘orange’, ‘lemon’] # [apple, orange, lemon] # ndarray
vegetables = np.array([‘tomato’, ‘carrot’, ‘onion’]) # [tomato carrot onion] ##############################
リストは、[ ]の中にカンマ(,)で区切ったデータ(要素といいます)を入れることで、作成することができます。またndarrayは、array()の引数にリストを入れることで、作成しています。どちらもたった1行で配列を作成することができていますよね。
連番の配列を作成する方法
Pythonでは、連番(1, 2, 3, …など)の配列を使う機会がとても多いので、連番の配列を作成する方法も確認しましょう。
# リスト
list(range(10)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # ndarray
np.arange(10) # [0 1 2 3 4 5 6 7 8 9] ##############################
リストとndarrayで方法が違いますが、どちらの方法でも簡単に連番が作れていますよね。range()で連番を作成し、それをlist()の引数に入れることでリスト化するイメージです。なお、np.arange()では、直接連番のリストを作成することができています。ちなみに上記のコードの場合、数字は1~10ではなく0~9になることに注意してください。
配列の長さを確認する方法
続いて、配列の長さを確認する方法も見てみましょう。このテクニックは、Pythonでfor文を使うときにとても役立ちます。
# リスト / ndarray
len(fruits) # 3
len(vegetables) # 3
##############################
配列の長さは、このようにlen()で取得することができます。リストでもndarrayでも、同じように要素の数を取得できるので便利ですよね。
配列の要素を検索する方法
配列を使っていると、ある要素がどこにあるのか分からない・知りたい、ということも出てきます。そのような場合には、要素が配列の何番目にあるのか、検索してすることが可能です。
# リスト
fruits.index(‘orange’) # 1
# ndarray
np.where(vegetables == ‘carrot’) # (array([1]),)
##############################
要素を検索する場合は、リストとndarrayでこのように違いがあるので注意しましょう。リストではindex(検索したい要素)、ndarrayではnp.where(調べたい配列 == 検索したい要素)とすることで、それぞれ要素の位置(indexといいます)が確認できていますよね。
これで、Pythonの配列の基本的な使い方はマスターすることができました!次の章からは、もう少し詳しい使い方について見ていきましょう。
Pythonの配列を追加する方法
それでは、リストとndarrayの詳しい使い方について、リストとndarrayの違いを見比べながら、説明します。まずは、配列を用意しましょう。
# リスト
fruits = [‘apple’, ‘orange’, ‘lemon’] # [apple, orange, lemon] # ndarray
vegetables = np.array([‘tomato’, ‘carrot’, ‘onion’]) # [tomato carrot onion] ##############################
リストは[ ]の中にカンマ(,)で区切ったデータ(要素といいます)を入れることで、ndarrayはarray()の引数にリストを入れることで作成できましたよね。
いま用意した配列にはデータがすでに入っていますが、配列に新しく要素を追加したいときは、次のような方法で要素を追加します。
# リスト
fruits.append(‘banana’) # [apple, orange, lemon] # ndarray
vegetables = np.append(vegetables, ‘cabbage’) # [tomato carrot onion cabbage] ##############################
このように、リストとndarrayのどちらでも、簡単に要素を追加することができました。次はPythonの配列を初期化・結合する方法についてみていきましょう。
Pythonの配列を初期化・結合する方法
次は、Pythonの配列を初期化・結合する方法について解説します!
まずは、Pythonの配列を初期化する方法から見てみましょう。
# リストの初期化
a = [0] * 3 # 3つの「0」で初期化 -> [0, 0, 0] b = [1] * 4 # 4つの「1」で初期化 -> [1, 1, 1, 1] c = [10] * 5 # 5つの「10」で初期化 -> [10, 10, 10, 10, 10] # ndarrayの初期化
np.zeros(3) # 3つの「0」で初期化 -> [0. 0. 0] np.ones(4) # 4つの「1」で初期化 -> [1 1 1 1] np.full(5, 10) # 5つの「10」で初期化 -> [10 10 10 10 10] ##############################
このように、Pythonでは簡単に配列を初期化することができます。np.full()に関しては少しややこしく感じるかもしれませんが、np.zeros()やnp.ones()とは違い、好きな値で初期化できることを考えると便利ですよね。
それでは、次にPythonの配列を結合する方法を見てみましょう。
# リストの結合
a = [1, 2, 3] b = [4, 5, 6] print(a + b) # [1, 2, 3, 4, 5, 6] # ndarrayの結合
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
print(x + y) # [5, 7, 9] … ①
print(np.concatenate([x, y])) # [1 2 3 4 5 6] … ②
##############################
Pythonの配列の適切な使い分け方
さて、ここまでPythonで配列を扱うための方法についてお伝えしましたが、リストとndarrayの適切な使い分けについてはあまり分かっていない、という人も多いですよね。そこで、この章ではPythonの配列を適切に使い分ける方法について解説します!
リストとndarrayを使い分けるポイントについてまとめると、以下のようになります。
- リストは、手軽に複数のデータをまとめて扱いたいときに使う
- ndarrayは、大量の数値データの処理や複雑な計算などを効率的におこないたいときに使う
リストはPythonの標準機能なので、NumPyのようにわざわざインポートする必要がありません。さらに、リストを作成するときやデータを追加するとき、リストを結合するときなど、ndarrayと比べるとコードが簡単です。
一方、ndarrayの特徴はリストとは反対で、導入に手間がかかり、場合によってはコードが複雑になるかもしれません。また、NumPyはPythonを便利にするためのライブラリですが、具体的には「数値計算を効率的にする」ためのライブラリです。つまり、Numpyでは様々な機能を使うことで、複雑な計算でも簡単に、素早く計算することができるようになります。
このように、ndarrayがNumPyのデータ形式であることを考えると、ndarrayは大量の数値データを扱う場合や、複雑な計算をする場合に使えるでしょう。
さて、今回はPythonの配列と配列の種類、配列の適切な使い分け方のポイントについてお伝えしました。今回の記事についてまとめると、このような内容になります。
- Pythonの配列とは、いくつものデータを同時に扱うことができる形式のこと
- Pythonの配列は、「リスト」と「ndarray」の2種類
- Pythonの配列を追加する方法は、append(“追加する要素”)とnp.append(“元の配列”, “追加する要素”)の2つ
- Pythonの配列を初期化・結合する方法は、np.full(“要素数”, “初期化する要素”)やnp.concatenate([“結合する配列”])など
- Pythonの配列の適切な使い分けでは、リストは手軽に複数のデータをまとめて扱いたいとき、ndarrayは大量の数値データや複雑な計算などを効率的におこないたいとき、と使い分ける
Pythonの配列はとても簡単に使うことができ、シチュエーションによって配列の使い分けも可能です。Pythonのプログラミングを習得するうえで、とても大切な配列。AI(人工知能)やデータサイエンスに挑戦するためにも、しっかりと使いこなせるようになりましょう!