dtype 뷰로 타입변환했을때 요소의 갯수가 바뀌는 이유가모르겠어요
조회수 349회
numpy dtype 뷰로 타입변환했을때 요소의 갯수가 바뀌는 이유가모르겠어요
arr = np.zeros(2, dtype=np.uint16)
arr
array([0, 0], dtype=np.uint16)
arr.view(np.uint8)
array([0, 0, 0, 0], dtype=uint8)
arr.view(np.uint32)
array([0], dtype=uint32)
1.uint16에서 uint8로 타입변경했는데 왜 [0,0]이 [0,0,0,0]으로 요소가 늘어났는지 이해가안가요. 타입만바꿨는데...
2.uint8에서 uint32로 타이변경해도 역시 [0]로 왜 1개밖에 안나오는지...
타입변경이 요소 갯수에도 영향을주나요? 왜이렇게 바뀌는지 이유좀 가르쳐주세요 ㅠ
2 답변
-
>>> arr = np.zeros(2, dtype=np.uint16) >>> arr array([0, 0], dtype=uint16) >>> arr.view(np.uint8) array([0, 0, 0, 0], dtype=uint8) >>> arr array([0, 0], dtype=uint16) >>> arr[0] = 0xabcd >>> arr array([43981, 0], dtype=uint16) >>> arr.view(np.uint8) array([205, 171, 0, 0], dtype=uint8) >>> hex(205) '0xcd' >>> hex(171) '0xab' >>> arr[0] = 0xabcd >>> arr[1] = 0x1234 >>> arr array([43981, 4660], dtype=uint16) >>> viewhex = lambda l: list(map(hex, l)) >>> viewhex(arr) ['0xabcd', '0x1234'] >>> viewhex(arr.view(np.uint8)) ['0xcd', '0xab', '0x34', '0x12'] >>> viewhex(arr.view(np.uint32)) ['0x1234abcd']
-
stackoverflow에 비슷한 질문이 있고,
https://stackoverflow.com/questions/69467339/what-is-the-purpose-of-the-view-method-in-numpy
공식 문서에도 관련 내용이 있는 것 같아서 참고하시면 좋을 것 같습니다.
a.view(some_dtype) or a.view(dtype=some_dtype) constructs a view of the array’s memory with a different data-type. This can cause a reinterpretation of the bytes of memory.
https://numpy.org/doc/stable/reference/generated/numpy.ndarray.view.html
댓글 입력