single
配列のリシェイプ
メニューを表示するにはスワイプしてください
NumPy における 配列のリシェイプ は、すべての要素を保持したまま配列の形状を変更する操作。多くの 機械学習 ライブラリの関数やメソッドでは、配列が特定の形状であることが求められるため、よく使用される操作。
配列の形状
NumPy 配列の shape は、各次元(axis)ごとの要素数を示す タプル。
例えば、長さが 5 の1次元配列は形状が (5,) となり、3 行 4 列の2次元配列は形状が (3, 4) となる:
1234import 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)
ndarray.reshape()
NumPy 配列には、形状を変更するための .reshape() メソッドがある。結果となる配列の形状を、整数、整数のタプル、または個別の整数として渡すだけでよい。
このメソッドは配列をその場で変更せず、新しい配列を返す。
実際には、.reshape() は元の配列のビューを返すため、リシェイプ後の配列に加えた変更は元の配列にも反映されます。
123456789import 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)
リシェイプ後の配列の要素数は元の配列と同じでなければならないため、任意の形状を指定することはできません。
この例では、配列を3行4列(3x4)の形状や、2つのブロックで各ブロックが2行3列(2x2x3)の形状に変形しても、要素数は合計12個のままです。
-1を使ったリシェイプ
NumPy では、-1 メソッドで .reshape() を指定すると、その次元のサイズを元の配列サイズから自動的に計算し、要素数を変えずに変形します。
.reshape(-1, 1) は、機械学習で1次元配列を1列の2次元配列に変形したい場合に特に便利です。このときの行数は要素数と等しく(自動計算されます)、列数は1になります。
123456import 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)
リシェイプ後の配列は、2次元配列として保存され、5 行 1 列の形状 (5, 1) となります。これに対し、元の 1次元配列 の形状は (5,) であり、これは 1要素のタプル です。任意の1次元配列では、形状は常に (n,) となり、n は要素数を表します。
numpy.reshape()
NumPy の reshape() 関数は、.reshape() メソッドと同じ機能を持ちますが、最初の引数として 配列 を渡す必要があります。shape パラメータには、整数のタプル または 単一の整数 を指定できます。例:np.reshape(array, (3, 4)):
123456import 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)
スワイプしてコーディングを開始
sales_data_2021 配列には、2021年の2つの製品の四半期ごとの売上データがシミュレートされています。最初の4要素は最初の製品の四半期ごとの売上を、最後の4要素は2番目の製品の四半期ごとの売上を表します。
sales_data_2021の適切なメソッドを使用して、これを2次元配列に変形してください。- 最初の行には最初の製品の四半期ごとの売上を含めてください。
- 2行目には2番目の製品の四半期ごとの売上を含めてください。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください