[Numpy] Shape
reshape()#
a = [[1,2,3], [4,5,6]] # python의 중첩리스트
arr = np.array(a) # ndarray 생성
print(arr)
print(arr.shape) # (2,3)
arr.shape = (3,2)
print(arr)
위의 예처럼 shape속성값을 직접 변경해서 shape을 변경시키는것은 좋지 않아요! 대신 제공된 다른 함수를 이용해서 이 작업을 진행해요!
arr = np.arange(0,12,1)
print(arr)
result = arr.reshape(4,3) # result는 ndarray가 아니예요! => view
# arr이 원본 result는 데이터를 가지고 있지 않아요!
print(result)
result[3,2] = 100
print(result)
print(arr)
arr = np.arange(0,12,1)
print(arr) # 요소가 총 12개인 ndarray를 만들었어요!
print(arr.size) # 12
result = arr.reshape(3,5) # shape이 맞지 않으면 view를 생성할 수 없어요!
print(result)
result = arr.reshape(2,-1)
print(result)
result = arr.reshape(-1,3)
print(result)
result = arr.reshape(2,3,-1)
print(result)
result = arr.reshape(3,4) # result는 view가 되요! 데이터를 가지고 있지 않아요!
print(result)
result = arr.reshape(3,4).copy() # view가 아니라 별도의 ndarray를 만들고 싶어요!
print(result)
arr[0] = 100
print(arr)
print(result)
ravel()#
a = [[1,2,3], [4,5,6]]
arr = np.array(a)
print(arr)
# 무조건 1차원 ndarray로 변경시키는 함수가 있어요!
result = arr.ravel()
print(result)
# 한가지 기억해야 할 사항은 ravel()로 변경된 결과는 ndarray가 아니라 view예요!
arr[0,0] = 100
print(arr)
print(result)
resize()#
arr = np.arange(0,12,1)
print(arr)
result = arr.resize(3,4)
print(result)
print(arr)
result = arr.resize(3,4)
result = np.resize(arr, (3,4)) # view가 아니라 다른 ndarray가 생성되요!
print(result)
arr[0] = 100
print(arr)
print(result)
result = np.resize(arr, (2,3)) # 이런게 가능하기 때문에 resize는 항상 사용에 조심!
print(result) # 가능한한 resize대신에 reshape을 쓰세요!