자료형 변환 in Python : list, numpy array, torch tensor

Sunwoo Pi·2023년 1월 8일
0

PyTorch

목록 보기
1/3
post-thumbnail
  • Python : list
  • NumPy : array (ndarray)
  • PyTorch, TensorFlow : tensor

list <-> numpy array

list to numpy array

import numpy as np

list1 = [1, 2, 3] 
print(list1) # [1, 2, 3]

array1 = np.array(list1) 
print(array1) # [1 2 3]

numpy array to list

import numpy as np

array1 = np.array([[1, 2], [3, 4]])
print(array1) # [[1 2]
			  #  [3 4]]
              
list1 = array1.tolist()
print(list1) # [[1, 2], [3, 4]]

# a = list(array1) # List 안에 담긴 Array
# print(a) # [array([1, 2]), array([3, 4])]

numpy array <-> tensor

numpy array to tensor

import numpy as np
import torch

array1 = np.array([[1, 2], [3, 4]])
print(array1) # [[1 2]
			  #  [3 4]]
              
tensor1 = torch.tensor(array1) # tensor 자료형 instance 생성, instance는 원본 데이터(array1)와 독립적
tensor2 = torch.as_tensor(array1) # tensor 자료형 view 생성, view는 원본 데이터(array1)와 메모리를 공유
tensor3 = torch.from_numpy(array1) # tensor 자료형 view 생성, view는 원본 데이터(array1)와 메모리를 공유
print(tensor1) # tensor([[1, 2],
               # 		 [3, 4]], dtype=torch.int32)
               # print(tensor2), print(tensor3)도 결과 동일

tensor to numpy array

import torch

tensor1 = torch.randn(4)
print(tensor1) # tensor([-2.1858, -2.1634, -0.8387, -1.0646])

array1 = tensor1.numpy()
print(array1) # [-2.1858428 -2.1634243 -0.8386757 -1.0646459]

list <-> tensor

list to tensor

import torch

list1 = [1, 2, 3]
print(list1) # [1, 2, 3]

tensor1 = torch.tensor(list1) # tensor 자료형 instance 생성, instance는 원본 데이터(array1)와 독립적
tensor2 = torch.as_tensor(list1) # tensor 자료형 view 생성, view는 원본 데이터(array1)와 메모리를 공유
print(tensor1) # tensor([1, 2, 3])
			   # print(tensor2)도 결과 마찬가지

tensor to list

import torch

tensor1 = torch.randn(4)
print(tensor1) # tensor([0.5798, -1.8420,  0.0677, -1.4465])

list1 = tensor1.tolist()
print(list1) # [0.57981276512146, -1.8419500589370728, 0.06773088127374649, -1.4465043544769287]

# a = list(tensor1) # List 안에 담긴 Tensor
# print(a) # [tensor(0.5798), tensor(-1.8420), tensor(0.0677), tensor(-1.4465)]

<참고>
https://technical-support.tistory.com/48

profile
어려운 게 제일 싫어😝

0개의 댓글