Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【第2回】 Numpyにおける配列の作成、変形、再代入

はじめに

Numpyはプログラミング言語Pythonにおいて数値計算を効率的に行うためのモジュールで、科学数値計算にはNumpyを用いることが非常に多くなっています。このモジュールは、効率的な数値計算を行うための型付きの多次元配列のサポートをPythonに加えるとともに、それらを操作するための大規模な高水準の数学関数ライブラリを提供しています。例えば、3行3列の行列の加減乗除などが計算できます。

本記事では、Numpyにおける配列の作成、変形、再代入について解説していきます。

SAMURAI TERAKOYA

numpyのインストール

インストールには、以下のコマンドを実行します。

pip install numpy

公式ページ:NumPy

 

1次元配列

まずは1次元配列を見ていきましょう。以下のInputようなプログラムを記載して実行するとOutputの内容が出力されます。

型を見ると多次元配列を示すnumpy.ndarrayとなっており、1次元配列で3要素あることが確認できます。

Input:

Output:

 

2次元配列

次に、2次元配列の確認をしていきます。以下のInputようなプログラムを記載して実行するとOutputの内容が出力されます。

結果を見ると1次元の時に比べて1行増えており、かつ、(2,3)という出力から2行3列の配列であることが確認できます。

Input:

Output:

 

配列の変形

次は、配列の変形をしていきます。まず、ここでは1行6列の配列cを用意しました。c.reshape(2,3)とすることで、2行3列の配列に変形していることが確認できます。

このshapeによって、配列の変形をすることが可能です。

Input:

Output:

 

配列の平坦化

次は多次元の配列を1次元の配列に変形させる方法について説明します。まずは、ravelを用いた方法です。

ここでは、2行3列の配列を1次元の6要素の配列に変形させています。

Input:

Output:

 

もう一つの方法に、flattenを用いたものがあります。こちらも2行3列の配列を1次元の6要素の配列に変形させています。

Input:

Output:

 

インデックスとスライス

配列から要素を部分的に抽出するのに、インデックスとスライスを使用します。

b[0]のようにインデックス値に0のように1つの値を渡した場合、行方向の配列が取得できます。ここで、0のインデックス値を渡しているので、1行目の1次元配列を取得することができます。

Input:

Output:

また、インデックス値には負の値を指定することもできます。負の場合には、最後の行からの順番の配列を取得することができます。この場合、最後から一つ目の配列なので、[6 7 8]を取得することができます。

Input:

Output:

 

2つの値をカンマ区切りで渡すと、行のインデックス値と列のインデックス値で示される値を取得することができます。ここでは、b[1,0]としているので、2行目の1列目の6が出力されます。

Input:

Output:

 

次はスライスを用いた抽出を行います。ここでは、b[: ,1]としており、:は行のすべてで、1は2列目の列を指定しています。つまり2列目を丸々取得しています。

Input:

Output:

 

次は、列側で:を指定します。b[1, : ]とすると、2行目を指定し、:ですべての列を取得することを表しています。

Input:

Output:

 

 

データの代入

配列の中身を修正したい場合に使用する方法を説明します。

以下の例では、aの1次元配列の2つ目の要素を9に置換する方法を示しています。

Input:

Output:

 

次は2次元配列の例です。b[1,1]を0とする例となっていて、2行目の2列目の7を0に置換することを示しています。

Input:

Output:

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事では、Numpyにおける配列の作成、変形、再代入について解説しました。具体的には、arrayを用いた1次元、2次元の配列の生成、shapeを用いた配列の変形、インデックスとスライスを用いた要素の抽出、再代入について説明していきました。科学計算では基本的な手法なので、ぜひ覚えましょう。