お役立ち情報

Pythonの配列を徹底解説!宣言や追加・削除など

Pythonの配列

配列とは、複数の要素を格納できる変数のようなものです。可変長のものや固定長のものがありますが、いずれにしても順番に値を格納します。値は0から連番で格納され、この連番のことをインデックスと言います。

すでに他のプログラミング言語やPythonの配列をある程度知っている方は上の説明を見ても今更感があるかもしれませんが、このページではそもそも配列が何かわからなくても理解できるように配列の説明をしていきます。

また配列についてすでにある程度知っている方でも少し応用的な内容が知れるようになっているので、ぜひ参考にしてください。

Python関連記事

PythonでNumpyを使って配列を宣言する

Pythonには配列をlistで作成する方法とNumpyで作成する方法があります。他の言語の経験がある方は、listはlist、Numpyで作る配列はarrayでイメージするとわかりやすいかと思います。

他の言語の経験がない方は、Numpyのarrayを配列として把握しておくと良いでしょう。サンプルコードは以下です。

import numpy as np
array1 = np.array([1, 2, 3, 4, 5])

これで要素が5つある配列が作られました。まずnumpyクラスをインポートし、npオブジェクトを生成しています。そしてnpオブジェクトのarrayメソッドを使用し、array1という配列を作成しました。

arrayメソッドでは1~5の5つの要素を格納しているため、array1には5つの要素が格納されています。このように分解すれば複雑ではないので、それほど難しい点はないかと思います。

また宣言した配列の要素の中身の確認や変更も可能です。確認方法は以下です。

array1[0]

このように記述すると、要素の0番目である1を指定できます。出力すればコンソールで確認することも可能です。注意点としては、要素は0から数えるということでしょう。配列に限った話ではありませんが、プログラミングの世界では基本的に0から数えます。

人間にわかりやすいようにあえて1から順になるようにコードを書きかえているシステムもありますが、何もしていなければ0から数えると覚えておいてください。また書籍等でインデントについて解説されている場合、0からのカウントで説明している場合と1からのカウントで説明している場合があります。

1からカウントしている場合人間にわかりやすいよう便宜的にそう説明しているので、システム的には0からのカウントです。

次に、要素の値を変更するコードは以下のようになります。

array1[0] = 10

このように記述すると、要素の0番目に10が格納されました。よって、配列の中身は以下のようになっています。

[10, 2, 3, 4, 5]

要素の0番目に入っていた1が10に置き換わります。

要素の追加

次に、要素を追加する方法を紹介します。

要素の追加にはappendというメソッドを使用します。このメソッドはnumpyクラスにもともと実装されているものなので、インポートして作成したオブジェクトに「.」を付けて指定すれば使えます。サンプルコードで確認してみましょう。

import numpy as np
array1 = np.array([1, 2, 3, 4, 5])

print np.append(array1, 6)

このように記述すると、[1, 2, 3, 4, 5, 6]と出力されます。要素に最後に6が追加されました。appendの引数の1つ目に配列名を指定し、2つ目に追加する要素を指定します。appendでは配列の最後に要素を追加しましたが、要素を任意の場所に追加挿入できるメソッドもあります。

そのメソッドはinsertというものになります。使い方はappendと同じですが、引数が1つ増えます。具体的なコードを見てみましょう。

import numpy as np
array1 = np.array([1, 2, 3, 4, 5])

print np. insert(array1, 1, 6)

上記のコードを実行すると、以下のように出力されます。

[1, 6, 2, 3, 4, 5]

要素の1番目に6が追加されました。0番目の要素の位置はそのまま変わらず、1番目以降の要素は後ろにそのままずれていきます。

要素の削除

次に要素の削除ですが、要素の削除はdeleteメソッドを使用します。流れとしては追加のときとほぼ同じです。以下がサンプルコードになります。

import numpy as np
array1 = np.array([1, 2, 3, 4, 5])
print np.delete(array1, 0)

上記のコードを実行すると、出力結果は以下のようになります。

[2, 3, 4, 5]

0番目の要素である1が削除されました。deleteメソッドはappendメソッドと同じ引数構造になっており、第1引数に対象となる配列を指定し、第2引数が削除したいインデックスです。

要素のソート

要素を昇順、または降順に並べ替えることが可能です。サンプルコードは以下です。

import numpy as np
array1 = np.array([1, 2, 3, 4, 5])
print sorted(array1, reverse=True)

このコードは降順に並べ替えるものなので、[5, 4, 3, 2, 1] と出力されます。なぜ降順になるかというと、sorterメソッドの第2引数に「reverse=True」と指定しているからです。これを指定すると降順に並べ替えられます。

第2引数に何も書かないと昇順になります。このsortedメソッドはnumpyクラスのものではありませんが、numpyクラスにもsortメソッドというものが用意されています。ただしこのsortメソッドは降順にソートすることはできません。

numpyクラスのargsortというメソッドは降順に並べ替えることも可能なのですが、使い方が少しややこしいためsortedメソッドを使用した方が簡単に昇順、降順に設定できるかと思います。

Numpyの時間効率

Pythonは科学計算や機械学習分野で使用されることの多い言語で、時間効率が非常に重要になります。

そして中でもNumpyはよく使用されるクラス、コードです。そのためlistと比べて時間効率を高めるためのいくつかの工夫が凝らされています。

まずNumpyは実はPythonではなく大部分がC言語で書かれています。これはかなり意外な事実なのではないでしょうか。理由としては、メモリブロックやデータ型アドレスの操作はC言語に分があるからです。Pythonだと処理中にメモリが散らばるため、C言語の利点を活かしています。

結果的にメモリブロックにデータを連続して配置できるため、読み込みや処理が高速化しています。

以上Pythonの配列について解説してきましたが、まずは深く考えずにコードを使ってみると良いかと思います。Numpyクラスが何なのか、どうやってメソッドを呼び出しているのか、メソッドの中身はどうなっているのか、といったことが気になるかもしれませんが、それは慣れてきたタイミングで見てみると良いでしょう。

プログラミングはどんどん利便性が高まり簡易化しているため、表面的な実装であれば実は外部機能の呼び出しでほとんど実現できてしまいます。ただし、今回のNumpyのように外部クラスやライブラリの中身を考え出すと難しくなります。

外部のソースをどこまで理解すべきかは意見が人それぞれですが、基本的な処理の記述に慣れてきたらトレースしてみるのも良いかもしれません。一気にすべて理解しようとするのではなく、徐々に理解できる領域を広げていくことがプログラミング上達のコツかもしれません。

Python関連記事
1,【Pythonのフリーランス求人・案件情報】エンジニア開発単価は?未経験でもいける?
2,Pythonでできることとは?人工知能で強みを発揮!
3,Pythonのインストール方法をまとめてみた
4,Pythonプログラミングに便利なAnacondaとは?機能やPycharmとの違いを解説
5,PythonでAnacondaをインストールする方法から実際の使い方までを解説
6,Pythonの配列を徹底解説!宣言や追加・削除など(この記事)
7,Pythonのif文の使い方を解説!演算子もおさらい
8,Pythonのfor文の使い方を配列で解説!breakやrangeの使い方もこれでOK
9,Pythonのlambda(ラムダ式)の使い方を徹底解説します
10,Pythonの高階関数map/filterの便利な使い方
11,Pythonでclassをどう使う?技術顧問に聞いてみた!

キャリアカウンセリングのプロとして
あなたに合った案件をご案内します。

まずはお気軽にお問い合わせください!

イメージ