配列の形状を変更させるnumpy.reshape()の使い方|resizeとの違いも説明

配列の形状を変更するnumpy.reshape()

配列の形状を変化させたいときは、numpy.reshap()が便利です。

本記事ではnumpy.reshape()の使い方を紹介します。

ndarray.reshape()やnumpy.resize()との違いについても分かりやすく教えます。

numpyを使うと配列の操作が簡単に行なえます。

目次

numpy.reshape()とは

numpy.reshape()とは

numpy.reshape()とはnumpy配列の形状を変化させる関数です。

numpy.reshape()|numpy公式

配列の形状変化とは、例えば1×6の配列を2×3へ変化させるというものです。

numpy.reshape()イメージ

実際にコードを書きながら、numpy.reshape()の使い方を覚えましょう。

本記事のコードは全てグーグルコラボラトリーで記述・動作確認をしています。

グーグルコラボラトリーとはgoogleアカウントを持っている人であれば、誰でも・無料で使うことができるpythonの対話型実行環境です。

データ分析に必要なライブラリが初めから搭載されていて、環境構築の必要がないため、python初心者には特にオススメです!

numpy.reshape()の使い方

numpy.reshape()の使い方

それでは、numpy.reshape()の使い方を解説します。

STEP
numpyのインストール

コードを書く前に、開発環境へnumpyのインストールをします。

グーグルコラボラトリーを使用している場合はこの作業を省略できます。

STEP
numpyのインポート

最初にnumpyをインポートします。

numpyは一般的にnpと略してインポートします。

import numpy as np
STEP
配列の用意

配列を用意します。

今回は1×6の配列を準備しましょう。

a = [0, 1, 2, 3, 4, 5]
print(a)

出力:

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

STEP
配列の形状変化

いよいよnumpy.reshape()で配列の形状を変更します。

numpy.reshape(変更したい配列, [変更後の形状])と記述します。

今回は2×3の配列へ変更させます。

np.reshape(a, (2, 3))

出力:

array([[0, 1],
[2, 3],
[4, 5]])

numpy.reshape()と-1

numpy.reshape()では-1を指定することが可能です。

-1を指定した場合、値は配列の長さと残りの次元から推測されます。

np.reshape(a, (3, -1))

出力:

array([[0, 1],
[2, 3],
[4, 5]])

numpy.reshapeの引数|order

引数order

numpry.reshape()にはorderという引数があります。

orderを指定することで、変換順序を指示することが可能です。

order=’C’がC言語方式でorder=’F’がFortran方式になります。order=’C’がデフォルトで設定されています。

b = np.reshape(a, (2, 3), order='C')
print("order=C:", b)
c = np.reshape(a, (2, 3), order='F')
print("order=F:", c)

出力:

order=C: [[0 1 2]
[3 4 5]]

order=F: [[0 2 4]
[1 3 5]]

ndarray.reshape()との違い

ndarray.reshape()

numpy.reshape()と同様の処理をする関数にndarray.reshape()があります。

ndarray.reshape()は基本的にnumpy.reshape()と同じですが、コードの書き方が広がります。

numpy.ndarray.reshape()|numpy公式

ndarrayとは、numpyで使うことのできる配列のデータ型です。

numpy.array()関数で配列を用意するとndarray型になります。

データ型の確認ができるtype()関数を使って、numpy.array()で用意した配列のデータ型を確認してみましょう。

d = np.array([0, 1, 2, 3, 4, 5])
print(d)
print(type(d))

出力:

[0 1 2 3 4 5]
<class ‘numpy.ndarray’>

またnumpy.array()は、すでに用意したリストをndarray型へ変更することも可能です。

f = np.array(a)

print(f)
print(type(f))

print(a)
print(type(a))

出力:

[0 1 2 3 4 5]
<class ‘numpy.ndarray’>
[0, 1, 2, 3, 4, 5]
<class ‘list’>

等間隔のndarray配列を用意したい場合、numpy.arage()を使う方法もあります。

numpy.arange()|numpy公式

e = np.arange(6)
print(e)

出力:

[0 1 2 3 4 5]

ndarray.reshape()を用いることで、 変更したい配列.reshape(変更後の形状)と記述できます。

d.reshape((2, 3))

出力:

array([[0, 1, 2],
[3, 4, 5]])

numpy.reshape()とnumpy.resize()の違い

numpy.size()

numpy.resize()関数は指定した形状を持つ配列を生み出す関数です。

numpy.resize()|numpy公式

numpy.reshape()との違いは、元の配列よりも大きい配列を生み出すことができる点です。

もし新しい配列が元の配列より大きい場合、新しい配列は元の繰り返しコピーで満たされます。

np.resize(a, (3, 3))

出力:

array([[0, 1, 2],
[3, 4, 5],
[0, 1, 2]])

numpy.reshape()で元の配列より大きい配列へ変更しようとすると、エラーが出ます。

np.reshape(a, (3,3))

出力:

ValueError: cannot reshape array of size 6 into shape (3,3)

まとめ

今回は配列の形状を変更するnumpy.reshape()について紹介しました。

numpy.reshape()を使用する際は、ndarray型の配列を用意することをオススメします。

よくある質問

NumPyのreshapeとResizeの違いは何ですか?

numpy.reshape()は元の配列より大きい配列にできませんが、numpy.resiza()は元の配列より大きい配列を生み出せます。

Reshape(-1 1)とはどういう意味ですか?

numpy(-1, 1)と指定することで、元の形状と逆の形状へ変更できます。

例えば、1×6の配列は6×1の配列に変更されます。

e = np.arange(6)
print("array_e:", e)

g = e.reshape((-1, 1))
print("array_g:", g)

出力:

array_e: [0 1 2 3 4 5]
array_g: [[0]
[1]
[2]
[3]
[4]
[5]]

pythonについてもっと勉強したいです!

pythonを勉強するには書籍・動画・プログラミングスクールなどがあります。特にUdemyは有料ですが、pythonを勉強できる動画がたくさんあるのでおすすめです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次