Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 配列の形状変更 | よく使われるNumPy関数
NumPy基礎
セクション 3.  4
single

single

book配列の形状変更

メニューを表示するにはスワイプしてください

NumPy における 配列のリシェイプ は、すべての要素を保持したまま配列の形状を変更する操作。多くの 機械学習 ライブラリの関数やメソッドでは、配列が特定の形状であることが求められるため、よく使用される操作。

配列の形状

Note
定義

NumPy 配列の shape は、各次元(axis)ごとの要素数を示す タプル

例えば、長さが 5 の1次元配列は形状が (5,) となり、34 列の2次元配列は形状が (3, 4) となります。

1234
import numpy as np array_1d = np.array([5, 7, 1, 10, 9]) array_2d = np.zeros((3, 4)) print(array_1d.shape, array_2d.shape)
copy

ndarray.reshape()

NumPy 配列には、形状を変更するための .reshape() メソッドがあります。結果となる配列の shape を、整数整数のタプル、または個別の整数として引数に渡します。

このメソッドは配列をインプレースで変更せず、新しい配列を返します。

Note
注意

実際には、.reshape() は元の配列のビューを返すため、リシェイプ後の配列に加えた変更は元の配列にも反映されます。

123456789
import numpy as np # Creating a 1D array from 0 to 11 inclusive array = np.arange(12) # Reshaping the array to a 3x4 2D array (matrix) reshaped_array_2d = array.reshape(3, 4) print(reshaped_array_2d) # Reshaping the array to a 2x2x3 3D array reshaped_array_3d = array.reshape(2, 2, 3) print(reshaped_array_3d)
copy
Note
注意

リシェイプ後の配列の要素数は元の配列と同じでなければならないため、任意の形状を指定することはできません。

この例では、配列を3行4列3x4)の形状や、2つのブロックで各ブロックが2行3列2x2x3)の形状に変形しても、要素数は合計12個のままです。

-1を使ったリシェイプ

NumPy では、-1 メソッドで .reshape() を指定すると、その次元のサイズが元の配列サイズから自動的に計算され、要素数は変わりません。

.reshape(-1, 1) は、機械学習で1次元配列を1列の2次元配列に変形したい場合に特に便利です。この場合、行数は要素数と同じになり(自動計算されます)。

123456
import numpy as np # Creating a 1D array from 0 to 4 inclusive array = np.arange(5) # Reshaping the array to a 2D array with one column reshaped_array = array.reshape(-1, 1) print(reshaped_array)
copy

変形後の配列は、51 列の 2次元配列 として保存され、形状は (5, 1) です。対照的に、元の 1次元配列 の形状は (5,) であり、これは 1要素のタプル です。任意の1次元配列において、形状は常に (n,) となり、n は要素数を表します。

numpy.reshape()

NumPyreshape() 関数は .reshape() メソッドと同じですが、最初の引数として 配列 を渡す必要があります。shape パラメータには、整数のタプル または 単一の整数 を渡すことができ、例として np.reshape(array, (3, 4)) があります:

123456
import numpy as np # Creating a 1D array from 0 to 11 inclusive array = np.arange(12) # Reshaping the array to a 3x4 2D array (matrix) reshaped_array_2d = np.reshape(array, (3, 4)) print(reshaped_array_2d)
copy
タスク

スワイプしてコーディングを開始

sales_data_2021 配列には、2021年の2つの製品に対する四半期ごとの売上データがシミュレートされています。最初の4要素は最初の製品の四半期ごとの売上、最後の4要素は2番目の製品の四半期ごとの売上を表します。

  1. sales_data_2021 の適切なメソッドを使用して、2次元配列に変形してください。
  2. 最初の行には最初の製品の四半期ごとの売上を含めてください。
  3. 2行目には2番目の製品の四半期ごとの売上を含めてください。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  4
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt