view() does not copy. It reinterprets the existing buffer under a different dtype. a = va.array([1, 2, 3, 4], dtype=va.int32) # 16 bytes a.view(va.uint8) # 16 uint8 values a.view(va.int16) # 8 int16 values