
A.5
構造化配列とレコード配列
511
ているような構造化配列を定義しています。
In [144]: dtype = [('x', np.float64), ('y', np.int32)]
In [145]: sarr = np.array([(1.5, 6), (np.pi, -2)], dtype=dtype)
In [146]: sarr
Out[146]:
array([( 1.5 , 6), ( 3.1416, -2)],
dtype=[('x', '<f8'), ('y', '<i4')])
構造化配列を定義するとき、
dtype
に構造を指定する方法はいくつかあります(オンラインの
NumPy
ドキュメントを参照してください)。よく使われるのは、
(
フィールド名
,
フィールドデータ型
)
という
形のタプルのリストで指定する方法です。このように指定すると、配列の要素はタプルのようなオブ
ジェク
トとなり、ディクショナリのようにアクセスできるようになります。
In [147]: sarr[0]
Out[147]: ( 1.5, 6)
In [148]: sarr[0]['y']
Out[148]: 6
フィールド名は
dtype.names
属性に格納されています。構造化配列のフィールドにアクセスすると、
データのストライドビューが返されます。したがってコピーは発生しません。
In [149]: sarr['x']
Out[149]: array([ 1.5 , 3.1416])
A.5.1
ネストした構造を持つ
dty ...