Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 配列のフラット化 | よく使われるNumPy関数
NumPy基礎
セクション 3.  5
single

single

book配列のフラット化

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

フラット化(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次元配列が返される。

1234567
import 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}')
copy

.reshape() メソッドまたは対応する関数は、元の配列のビューを返すため、変形後の配列に加えた変更は元の配列にも影響します。

flattened_array = np.reshape(array_2d, -1) を使用することで、メソッドを呼び出す代わりに同様の操作が可能です。

ravel()

ndarray.ravel() メソッドまたは numpy.ravel(array) 関数は、reshape(-1) と同様に動作し、元の配列のビューも返します:

1234567
import 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}')
copy

flattened_array = np.ravel(array_2d) は、メソッドを呼び出す代わりに使用可能。

ndarray.flatten()

元の配列のビューではなくコピーが必要な場合、.flatten() メソッドを使用。

1234567
import 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}')
copy
Note
注意

配列のビューをコピーして別のオブジェクトを作成することで、このコピーを元の配列に影響を与えずに変更可能。

タスク

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

  1. .flatten() メソッドを正しく使用して exam_scores をフラット化し、その結果を exam_scores_flattened に格納してください。
  2. .reshape() メソッドを正しく使用して exam_scores をフラット化し、その結果を exam_scores_reshaped に格納してください。
  3. .ravel() メソッドを使用して exam_scores をフラット化し、その結果を exam_scores_raveled に格納してください。
  4. 作成した3つのフラット化配列のうち、元の配列のビューではなくコピーであるものを選び、その最初の要素(正のインデックスを使用)に 100 を代入してください。

解答

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

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

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

セクション 3.  5
single

single

AIに質問する

expand

AIに質問する

ChatGPT

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

some-alt