AI資格ドリル
資格を選ぶ

用語比較

NumPyのreshapeとresizeの違い|形を変えた配列を返すか、配列そのものを変えるか(Python3データ分析)

NumPyの reshape は形を変えた配列を返して元の配列を変えず、ndarray.resize メソッドは配列そのものを変えます。

返す側が reshape、自分を書き換える側が resizeと覚えると、コードを見て元の配列が変わるかどうかを判断できます。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。

reshapeとresize(ndarray.resize メソッド)の要点

reshape

形を変えた配列を返す。次元に -1 を指定すると、他の次元から自動で計算される。

resize(ndarray.resize メソッド)

配列そのものを変更する。公式の例では、a.resize((2, 6)) のあと a 自体が2行6列になる。

違いを表で確認

比較軸reshaperesize(ndarray.resize メソッド)
元の配列 aa.reshape(...) を呼んでも、a の形は変わらないa.resize(...) を呼ぶと、a そのものが変わる
結果の受け取り方新しい形の配列が返るので、変数で受け取って使うa を直接変更する。公式の例では、呼び出しの行に結果の表示がなく、次に a を表示して変化を確かめている
次元に -1 を指定指定できる。他の次元から自動で計算される(公式の例では a.reshape(3, -1))形は a.resize((2, 6)) のようにタプルで明示して渡す。-1 の自動計算は、公式では reshape の説明として書かれている
公式の例での形3行4列のまま、a.reshape(3, -1) が3行4列の配列を返す3行4列の a が、a.resize((2, 6)) で2行6列になる

Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

元の配列を残したまま、別の形で計算したい人

元の a を壊したくない場面です。reshape は形を変えた配列を返すだけなので、返り値を別の変数で受け取って使います。

02

配列そのものの形を変えたい人

a の形を直接書き換えたい場面です。ndarray.resize メソッドは配列そのものを変更するので、呼んだあとの a が新しい形になります。

03

reshape(3, -1) の -1 の意味で迷う人

12要素の配列に reshape(3, -1) と書くと、他の次元から自動で計算されて (3, 4) になります。-1 は計算を NumPy に任せる印です。

具体例で使い分ける

例 1

reshape(3, -1) の -1 を読む

公式の例の配列 a は3行4列で、全部で12要素です。この a に a.reshape(3, -1) を呼びます。

  • 行数を3と指定し、列数に -1 を指定しています。
  • -1 の次元は、他の次元から自動で計算されます。12要素を3行に並べるので、列数は4になります。
  • 結果は3行4列の配列で、公式の例では元の a と同じ中身が表示されています。

結論: -1 は「残りは自動で計算して」という指定で、reshape の説明に出てきます。

例 2

a.resize((2, 6)) で a が変わる

同じ3行4列の a に、公式の例のとおり a.resize((2, 6)) を呼びます。

  • 呼び出しの行には、結果の表示がありません。
  • 次に a を表示すると、2行6列の配列になっています。
  • つまり、resize は戻り値を受け取るものではなく、a そのものを変更したと分かります。

結論: resize のあとは、a の shape が (2, 6) になります。

例 3

どちらを使うかを、元の配列の扱いで決める

同じ配列 a を、別の形で使いたい場面です。

  • 元の a の形を後でも使うなら、形を変えた配列を返す reshape を選びます。
  • a の形をそのまま置き換えてよいなら、配列そのものを変える resize の動きになります。

結論: 判断の軸は、元の配列を変えてよいかどうかです。

問題文から答えを選ぶ手順

  1. 1

    呼び出しの形を見る

    a.reshape(...) と a.resize(...) のどちらかを確認します。名前のとおりに動きが分かれます。

  2. 2

    元の配列が変わるかを答える

    reshape は形を変えた配列を返し、元の配列は変わりません。resize は配列そのものを変更します。

  3. 3

    -1 の指定があれば自動計算と読む

    reshape の次元に -1 があれば、他の次元から自動で計算されます。12要素で reshape(3, -1) なら (3, 4) です。

試験での見分け方

  • 1reshape は形を変えた配列を返し、ndarray.resize メソッドは配列そのものを変更する。
  • 2reshape で次元に -1 を指定すると、他の次元から自動で計算される。
  • 312要素の配列に reshape(3, -1) と書くと (3, 4) になる。

誤答しやすい選択肢

reshape を呼ぶと、元の配列の形も変わると考える

修正: reshape は形を変えた配列を返します。元の配列を変更するのは ndarray.resize メソッドの動きです。

resize の呼び出しの行に、新しい配列が返ると考える

修正: 公式の例では a.resize((2, 6)) の行に結果の表示がなく、次に a を表示して変化を確かめています。配列そのものを変更する動きです。

-1 は「1つ前」や「最後」を指す印だと考える

修正: reshape での -1 は、他の次元から自動で計算される次元の指定です。

確認問題

Q1形を変えた配列を返すのは、reshape と resize のどちらか?

答え: reshape

ndarray.resize メソッドは配列そのものを変更します。

Q2a が3行4列のとき、a.resize((2, 6)) を呼んだあとの a の形は?

答え: 2行6列

resize は配列そのものを変更するので、呼んだあとの a が2行6列になります。

Q312要素の配列に reshape(3, -1) を呼ぶと、形は?

答え: (3, 4)

-1 の次元は、他の次元から自動で計算されます。12÷3で列数は4です。

Q4a.reshape(3, -1) を呼ぶと、元の a の形は変わるか?

答え: 変わらない

reshape は形を変えた配列を返すだけで、元の配列は変更しません。

到達チェック

  • reshape が返す側、resize が配列そのものを変える側だと説明できる
  • reshape での -1 が自動計算を意味すると言える
  • 12要素の配列に reshape(3, -1) と書いたときの形を答えられる

同じ資格で次に知りたいこと

よくある質問

Qreshapeとresizeの違いは?

A

reshape は形を変えた配列を返し、元の配列は変わりません。ndarray.resize メソッドは配列そのものを変更します。

Qreshapeの-1は何を意味する?

A

他の次元から自動で計算される次元の指定です。12要素の配列に reshape(3, -1) と書くと (3, 4) になります。

Qresizeの結果は戻り値で受け取る?

A

公式の例では a.resize((2, 6)) の行に結果の表示がなく、次に a を表示して変化を確かめています。配列そのものを変更する動きです。

Qデータ分析試験の範囲?

A

本サイトの第3章NumPyの「演算と軸」で扱います。出題の形式や範囲は、受験前に公式の案内で確認してください。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)