single
配列のフラット化
メニューを表示するにはスワイプしてください
フラット化(Flattening) とは、多次元配列を 1次元配列(1D array) に変換し、その内容を展開する操作。
この操作は、配列の要素を一つずつ処理したい場合や、特定のアルゴリズムにデータをより適した形にしたい場合に有用。
NumPy でフラット化を行う方法は3つ存在:
ndarray.reshape(-1)メソッドまたはnumpy.reshape(array, -1)関数の使用;ndarray.ravel()メソッドまたはnumpy.ravel(array)関数の使用;ndarray.flatten()メソッドの使用。
reshape(-1)
.reshape(-1) メソッドまたは reshape(array, -1) 関数は、同じ要素数を持つ連続したフラット配列を返す。
前章でも述べた通り、-1 は元の配列サイズに基づいて次元のサイズを自動的に計算する。shape に単一の整数を渡すため、同じ要素数の1次元配列が返される。
1234567import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6]]) flattened_array = array_2d.reshape(-1) print(f'Flatenned array: {flattened_array}') # Changing the first element of flattened_array flattened_array[0] = 10 print(f'Modified initial array:\n{array_2d}')
.reshape() メソッドまたは対応する関数は、元の配列のビューを返すため、変形後の配列に加えた変更は元の配列にも影響します。
flattened_array = np.reshape(array_2d, -1) を使用することで、メソッドを呼び出す代わりに同様の操作が可能です。
ravel()
ndarray.ravel() メソッドまたは numpy.ravel(array) 関数は、reshape(-1) と同様に動作し、元の配列のビューも返します:
1234567import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6]]) flattened_array = array_2d.ravel() print(f'Flatenned array: {flattened_array}') # Changing the first element of flattened_array flattened_array[0] = 10 print(f'Modified initial array:\n{array_2d}')
flattened_array = np.ravel(array_2d) は、メソッドを呼び出す代わりに使用可能。
ndarray.flatten()
元の配列のビューではなくコピーが必要な場合、.flatten() メソッドを使用。
1234567import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6]]) flattened_array = array_2d.flatten() print(f'Flatenned array: {flattened_array}') # Changing the first element of flattened_array flattened_array[0] = 10 print(f'Initial array:\n{array_2d}')
配列のビューをコピーして別のオブジェクトを作成することで、このコピーを元の配列に影響を与えずに変更可能。
スワイプしてコーディングを開始
.flatten()メソッドを正しく使用してexam_scoresをフラット化し、その結果をexam_scores_flattenedに格納してください。.reshape()メソッドを正しく使用してexam_scoresをフラット化し、その結果をexam_scores_reshapedに格納してください。.ravel()メソッドを使用してexam_scoresをフラット化し、その結果をexam_scores_raveledに格納してください。- 作成した3つのフラット化配列のうち、元の配列のビューではなくコピーであるものを選び、その最初の要素(正のインデックスを使用)に
100を代入してください。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください