[NumPy] Structured Array


C言語に類似した構造体(struct)の配列.すなわち、定義された構造体がBTSメンバーであれば、構造体のメンバーは活動名、年齢、本名等である.一方、Numpyでは、これらのデータセットを有する配列を構造化配列(Structured Array)と呼ぶ.
構造化されたアレイのメンバーをインポートするには、dictionary方式でインポートされます(<structure_name>["<member_name>"]).
from datetime import datetime >>> bts = np.array([('V', datetime.now().year - 1995 + 1, "Taehyung Kim"), ("JIN", datetime.now().year - 1992 + 1, "Seokjin Kim"), ("RM", datetime.now().year - 1994 + 1, "Namjoon Kim") ], dtype=[("stage_name", "U10"), ("age", "int64"), ("real_name", "U10")]) >>> bts array([('V', 27, 'Taehyung K'), ('JIN', 30, 'Seokjin Ki'), ('RM', 28, 'Namjoon Ki')], dtype=[('stage_name', '<U10'), ('age', '<i8'), ('real_name', '<U15')]) >>> bts[0] ('V', 27, 'Taehyung Kim') >>> bts["real_name"] array(['Taehyung Kim', 'Seokjin Kim', 'Namjoon Kim'], dtype='<U15') # slicing >>> bts[0:2] array([('V', 27, 'Taehyung Kim'), ('JIN', 30, 'Seokjin Kim')], dtype=[('stage_name', '<U10'), ('age', '<i8'), ('real_name', '<U15')]) # boolean indexing >>> bts[[True, False, False]] array([('V', 27, 'Taehyung Kim')], dtype=[('stage_name', '<U10'), ('age', '<i8'), ('real_name', '<U15')]) # fancy indexing >>> bts[[2]] array([('RM', 28, 'Namjoon Kim')], dtype=[('stage_name', '<U10'), ('age', '<i8'), ('real_name', '<U15')]) >>> bts.dtype dtype([('stage_name', '<U10'), ('age', '<i8'), ('real_name', '<U15')]) # member name >>> bts.dtype.names ('stage_name', 'age', 'real_name') # (member name, data type) >>> bts.dtype.descr [('stage_name', '<U10'), ('age', '<i8'), ('real_name', '<U15')]

参考資料1 参考資料2 参考資料3