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配列のフラット化

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

フラット化とは、多次元配列を1次元配列に変換し、その内容を展開することを指します。

この操作は、配列の要素を一つずつ処理したい場合や、特定のアルゴリズムにデータをより適した形にしたい場合に有用です。

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