[NumPy] Structured Array

kkiyou·2021년 6월 20일
0

Data Science

목록 보기
7/11

C언어의 구조체(struct)와 유사한 배열이다. 즉 정의된 구조체가 BTS 멤버라고 하면, 구조체의 member는 활동명, 나이, 본명 등인 것이다. 그리고 NumPy에서 이러한 data set을 가진 배열을 Structured Array(구조화된 배열)이라고 한다.

Structured Array의 member를 가져오기 위해서는 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

0개의 댓글