
96
2
章
NumPy
の基礎
2.9.3
RecordArrays
:構造化配列の変形版
NumPy
はレコード配列
np.recarray
クラスも提供しています。これは、前述の構造化配列とほ
とんど同じですが、フィールドには辞書キーではなく属性としてアクセスできる点が異なります。
私たちはこれまで、次のようにして
age
配列にアクセスしたことを思い出してください。
In[15]: data['age']
Out[15]: array([25, 45, 37, 19], dtype=int32)
代わりにデータをレコード配列にすると、少ないキーストロークでデータにアクセスできます。
In[16]: data_rec = data.view(np.recarray)
data_rec.age
Out[16]: array([25, 45, 37, 19], dtype=int32)
レコード配列の欠点は、同じ構文を使用している場合でも、フィールドへのアクセスに伴う余分
なオーバーヘッドがあることです。次のようにして確認できます。
In[17]: %timeit data['age']
%timeit data_rec['age']
%timeit data_rec.age
1000000 loops, best of 3: 241 ns per loop
100000 loops, best of 3: 4.61
μ
s per loop
100000 loops, best of 3: 7.27
μ
s per loop ...