
512
付録
A
NumPy
:応用編
2
次元配列が返ってきます。つまり、
arr[0]['x']
、
arr[1]['x']
、……と各レコードの
x
フィールドを
順に見ていくような操作は不要です。
In [154]: arr['x']
Out[154]:
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
これを用いると、メモリ上の配列の単位として、もっと複雑で入れ子構造を持った構造を表現でき
ます。同様に、
dtype
を階層化して、さらに複雑な構造を持たせることも可能です。次の例を見てみま
しょう。
In [155]: dtype = [('x', [('a', 'f8'), ('b', 'f4')]), ('y', np.int32)]
In [156]: data = np.array([((1, 2), 5), ((3, 4), 6)], dtype=dtyp
e)
In [157]: data['x']
Out[157]:
array([( 1., 2.), ( 3., 4.)],
dtype=[('a', '<f8'), ('b', '<f4')])
In [158]: data['y']
Out[158]: array([5, 6], dtype=int32)
In [159]: data['x']['a']
Out[159]: array([ 1., 3.])
pandas
のデータフレーム(
DataFrame
)では、この機能を直接的にはサポートしていませんが、 ...