はじめに
この実験では、NumPy の構造化配列について学びます。構造化配列は、データ型が、名前付きフィールドのシーケンスとして組織されたより単純なデータ型のコンポジションである ndarray です。これらは、表形式のデータなどの構造化データを扱う際に便利で、各フィールドがデータの異なる属性を表します。
注:
07-structured-arrays.ipynb
でコードを記述できます。手順では一部の印刷操作を省略していますが、必要に応じて出力を印刷できます。
This tutorial is from open-source community. Access the source code
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、NumPy の構造化配列について学びます。構造化配列は、データ型が、名前付きフィールドのシーケンスとして組織されたより単純なデータ型のコンポジションである ndarray です。これらは、表形式のデータなどの構造化データを扱う際に便利で、各フィールドがデータの異なる属性を表します。
注:
07-structured-arrays.ipynb
でコードを記述できます。手順では一部の印刷操作を省略していますが、必要に応じて出力を印刷できます。
構造化配列を作成するには、np.array
関数を使用して、dtype
パラメータを使ってデータ型を指定します。データ型はタプルのリストでなければならず、各タプルは構造化配列のフィールドを表します。各タプルには、フィールド名とそのフィールドのデータ型が含まれている必要があります。
import numpy as np
## Create a structured array
x = np.array([('Alice', 25), ('Bob', 30)], dtype=[('name', 'U10'), ('age', int)])
構造化配列の個々のフィールドにアクセスするには、フィールド名を使ったインデックス付けを行います。これにより、そのフィールドの値のみを含む新しい配列が返されます。
## Access the 'name' field
names = x['name']
構造化配列の個々のフィールドを変更することもできます。フィールド名を使ったインデックス付けを行い、新しい値を割り当てることで変更できます。
## Modify the 'age' field
x['age'] = [26, 31]
複数のフィールド名のリストを渡すことで、構造化配列を複数のフィールドでインデックス付けすることができます。これにより、指定されたフィールドのみを含む新しい構造化配列が返されます。
## Index with multiple fields
subset = x[['name', 'age']]
2つの構造化配列のdtypeが等しい場合、等号演算子 (==
) を使って比較することができます。これにより、すべてのフィールドについて同じ値を持つ要素を示すブール型の配列が返されます。
## Compare two structured arrays
y = np.array([('Alice', 25), ('Bob', 30)], dtype=[('name', 'U10'), ('age', int)])
comparison = x == y
レコード配列は、ndarrayのサブクラスであり、インデックスではなく属性を使ってフィールドにアクセスできるようにします。np.rec.array
関数を使ってレコード配列を作成することができます。
## Create a record array
recordarr = np.rec.array([('Alice', 25), ('Bob', 30)], dtype=[('name', 'U10'), ('age', int)])
レコード配列のフィールドには、インデックスではなく属性を使ってアクセスできます。これにより、構造化データを扱うためのより便利な方法が提供されます。
## Access fields by attribute
names = recordarr.name
view
メソッドを使って、構造化配列を np.recarray
型を指定してレコード配列に変換することができます。
## Convert a structured array to a record array
recordarr = x.view(np.recarray)
レコード配列を構造化配列に戻すには、view
メソッドを使って構造化配列の元のdtypeを指定することができます。
## Convert a record array to a structured array
x = recordarr.view(dtype=[('name', 'U10'), ('age', int)])
この実験では、NumPyにおける構造化配列の作成方法と使い方を学びました。構造化配列は、構造化データを扱う際に便利で、配列の個々のフィールドにアクセスして変更することができます。また、レコード配列についても学びました。レコード配列は、インデックスではなく属性を使ってフィールドにアクセスできるようにすることで、構造化データを扱うためのより便利な方法を提供します。