Numpy.reshape関数の使い方と仕様

numpyのreshape関数の使い方と仕様Numpy
ゆうすけ
ゆうすけ

numpy.reshapeってなんですか?

資格マフィア
資格マフィア

Ndarray(Numpy配列)を整形する関数だ。
似ているndarray.reshapeとの違いも併せて解説しよう。

 

✔️ 本記事のテーマ

numpy.reshape関数の使い方


✔️ 読者さんへの前置きメッセージ

本記事は「numpy.reshape関数」について書いています。

 

この記事を読むことで
「numpy.reshape関数の使い方 と ndarray.reshapeメソッドとの違い」
を理解できます。

 

Numpyは数値計算に特化したPythonライブラリです。

 

そして、numpy.reshape関数は、Numpyの配列を整形するときに使用します。

 

numpy.reshapeとよく似た関数にndarray.reshapeメソッドというものがあります。

 

ややこしいことに、
numpy.reshape関数とndarray.reshapeメソッドは使い方が微妙に違います。

 

そこらへんの違いも踏まえて、numpy.reshape関数について解説していきましょう。

 

なお、numpyのその他の関数については以下の記事でも解説しています。

 

Numpyとは?

numpyとは?

numpyは、Pythonで数値計算をするためのライブラリです。

 

基本的な計算はPythonだけでも出来ますが、
numpyを使うことで難易度の高い計算や複雑な計算を
簡単にそして高速に行うことができます。

 

近年、numpyの注目度が高まっている背景には、
機械学習の台頭が挙げられるでしょう。

 

Python自体、機械学習と関連の高い言語ですが、
numpyライブラリはその便利さから機械学習分野では欠かせないライブラリです。

 

なお、Numpyついての詳細は
numpyの使い方と便利な関数」の記事で解説しています。

 

numpy.reshape関数の使い方

numpy.reshape関数の使い方

numpy.reshape関数は一言で言うと、
ndarray(Ndarray配列)の形状を変える時に使用します。

 

numpy.reshape関数の引数などの使い方は以下の通りです。

np.reshape(対象のndarray, 次元をイテレータ形式で指定)

コードで説明しましょう。

 

以下のような一次元配列があるとします。

 

import numpy as np


input = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
# [1 2 3 4 5 6 7 8 9 10 11 12]

 

この配列を要素をそのままに、
二次元配列に形状を変えるときにnumpy.reshape関数を使用します。

 

output = np.reshape(input, [2, 6])

print(output)
# [ [1 2 3 4  5  6]
#   [7 8 9 10 11 12] ]

 

このようにnumpy.reshape関数を使うことで、
[1, 12]の一次元配列から[2, 6]の二次元配列へと形状を変化させることができます。

 

3次元以上の複雑な形状にも変化することももちろんできます。

 

output = np.reshape(input, [2, 2, 3])

print(output)
# [ [ [1 2 3 ]
#     [4 5 6 ] ]
#   [ [7 8 9 ]
#     [10 11 12 ] ] ]

numpy.reshape関数における引数「-1」

numpy.reshape関数における引数「-1」

numpy.reshape関数は引数に「-1」を与えることで、
自動的に次元数を計算することができます。

 

どういうことかコードで解説しましょう。

 

import numpy as np


input = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
# [1 2 3 4 5 6 7 8 9 10 11 12]

output_1 = np.reshape(input, [2, -1])
output_2 = np.reshape(input, [2, 2, -1])

print(output_1)
# [ [1 2 3 4  5  6]
#   [7 8 9 10 11 12] ]

print(output_2)
# [ [ [1 2 3 ]
#     [4 5 6 ] ]
#   [ [7 8 9 ]
#     [10 11 12 ] ] ]

 

このように次元数を途中まで指定して最後に「-1」を引数として渡すことで
残りの次元数を自動的に計算してくれます。

 

上のコード例では、

  • 12 = 2 * 6 の「6」
  • 12 = 2 * 2 * 3 の「3」

の部分をNumpyライブラリで自動的に計算しています。

 

ndarray.reshape関数との違い

ndarray.reshape関数との違い

numpy.reshapeによく似たものとしてndarray.reshapeメソッドがあります。

 

何が違うのかと言うと、

  • numpy.reshapeはnumpyライブラリの関数
  • ndarray.reshapeメソッドはndarray(numpy配列)のメソッド

という違いがあります。

 

この二つは動作としては同じですが、引数の与え方が異なります。

 

ndarray.reshapeメソッドは以下のように引数を与ええます。

ndarrayオブジェクト.reshape(次元をイテレータ形式で指定)

先ほどと同じようにコード使って説明しましょう。

 

import numpy as np


input = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
# [1 2 3 4 5 6 7 8 9 10 11 12]

output = input.reshape([2, 6])

print(output)
# [ [1 2 3 4  5  6]
#   [7 8 9 10 11 12] ]

 

このように、ndarrayオブジェクトのメソッドを使うことで、
numpy.reshape関数と同じようにndarrayの形状を変化させることができます。

 

なお、ndarray.reshapeメソッドは引数にリストではなく、
次元数を直接指定することもできます。

 

import numpy as np


input = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
# [1 2 3 4 5 6 7 8 9 10 11 12]

output = input.reshape(2, 6)

print(output)
# [ [1 2 3 4  5  6]
#   [7 8 9 10 11 12] ]

 

さらに、numpy.reshape関数と同じように引数「-1」を指定することもできます。

 

import numpy as np


input = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
# [1 2 3 4 5 6 7 8 9 10 11 12]

output = input.reshape(2, -1)

print(output)
# [ [1 2 3 4  5  6]
#   [7 8 9 10 11 12] ]

numpy.reshapeを使う意味とは?

numpy.reshapeを使う意味とは?

そもそもndarray(Numpy配列)の形状を変化させる意味とは何なのでしょうか?

 

これはNumpyが数値計算用のライブラリだということが関係してきます。

 

行列などの複雑な計算においては次元(shape)が非常に重要になってきます。

 

このような計算を行う場合、計算に使う行列は次元を合わせておく必要があります。

 

数値計算用ライブラリであるNumpyはこのような行列計算を行う際によく使われるので、numpy.reshape関数を使って、次元数を調整する必要があるのです。

 

最近では、よく機械学習を行う際に、インプット情報としてndarrayが使用されます。

 

その際に、正しく学習や予測を行うために、
ndarrayの次元を正しい次元に整形するというユースケースも多く見られます。

 

NumpyやPythonについてもっとスキルをつけるなら

NumpyやPythonについてもっとスキルをつけるなら

今回は、Numpyのreshape関数について解説しました。

 

Numpyは画像認識や機械学習を行う上では、欠かすことのできないライブラリです。

 

Numpyについてスキルをつけるなら、Udemyの教材がオススメです。

>> 【NumPy・Python3で】ゼロから作るニューラルネットワーク

 

Udemyは動画ベースで学習ができるので、
実際のコードや図解を見ながら、学習を進めることができます。

 

さらに今なら30日間返金保証がついているので、
一度購入して自分の思っていたものと違った場合は費用がかかりません。

 

この教材はNumpyを使って機械学習を行うところまでを動画で解説しています。

 

誰もがつまずきがちなNumpyライブラリ特有の仕様や機械学習という概念について、分かりやすく解説されています。独学でPythonによる機械学習を学ぶにはピッタリの教材です。

 

また、Pythonについて基礎から学ぶのであれば、オンラインスクールがオススメです。


オンラインスクールで学習すると、講義も分かりやすく、
サポート体制もしっかりしているので、これからPythonを学ぶ人にもオススメです。


オンラインで無料レッスンを体験することもできるので、
自分にあっているかどうかを確かめることができます。


オススメは以下の3つです。
どのスクールも無料体験が用意されているので、
契約前に自分に最適なスクールを探すことができるでしょう。

✔️オススメのプログラミングスクール ベスト3

プログラミングスクールについては「プログラミングスクールで失敗しないためには【オススメベスト3も紹介】」の記事でも紹介しています。


気になった方はぜひチェックしてみて下さい〜!

コメント

タイトルとURLをコピーしました