numpyProject 타입변경 / 백터연산
2023. 6. 12. 15:29ㆍIT
반응형
1 #>벡터연산
벡터연산 ( Vectorized operation )
1. 기존 파이썬에서 지원 안된 요소간의 연산을 numpy는 지원함.
2. 다차원배열간 산술연산, 다차원 배열과 스칼라 산술연산
3. 비교연산도 가능 ==> 논리값(True/False) ==> boolean 색인 ( `중요` )
==> python and/or/not 대신에 & / | / ~ 사용한다.
브로드캐스팅(broadcasting)
->서로 다른 차원을 가지고 있는 두 개의 값을 산술 하는 도중에 연산이 가능 하도록 차원을
자동으로 맞춰주는 작업을 의미한다.
1.기본 파이썬 연산
print("1. 파이썬의 리스트 + 리스트")
print([10,20,30]+2) # TypeError: can only concatenate list (not "int") to list
print([10,20,30]*3) # 10, 20, 30, 10, 20, 30, 10, 20, 30]
print("2. 기본 파이썬의 리스트 + 스칼라")
print([10,20,30] + 2) # TypeError: can only concatenate list (not "int") to list
print([10,20,30] * 3) # [10, 20, 30, 10, 20, 30, 10, 20, 30]
#################################################
2.백터 + 벡터 ==> 요소간 연산, 반드시 shape 일치해야 된다.
arr1D_1 = np.array([10,20,30])
arr1D_2 = np.array([5,4,3])
print("3. numpy의 벡터간 연산 처리")
print(arr1D_1 + arr1D_2) # [15 24 33]
print(arr1D_1 - arr1D_2) # [ 5 16 27]
print(arr1D_1 * arr1D_2) # [50 80 90]
print(arr1D_1 / arr1D_2) # [ 2. 5. 10.]
3.백터 + 스칼라 ==> 자동으로 브로드캐스팅 되어 연산됨.
arr1D_1 = np.array([10,20,30])
print("4. numpy의 벡터 + 스칼라 연산 처리")
print(arr1D_1 + 2) # [12 22 32]
print(arr1D_1 - 2) # [ 8 18 28]
print(arr1D_1 * 2) # [20 40 60]
print(arr1D_1 / 2) # [ 5. 10. 15.]
4.비교 연산도 벡터화 가능
print("5. 벡터의 비교 연산처리1: ", arr1D_1%3 == 0) # [False False True]
print("5. 벡터의 비교 연산처리2: ", arr1D_1 > 15) # [False True True]
print("5. 벡터의 비교 연산처리3: ", (arr1D_1 > 15) & ( arr1D_1%6 == 0)) # [False False True]
2.>>타입변경
타입 변경
==> 다차원 배열의 모든 요소가 한꺼번에 변경된다. ( 벡터화 연산 )
1. dtype 속성 이용
2. astype 함수 이용
1. int --> float으로
data = [10,20,30]
arr1 = np.array(data)
arr2 = np.array(data , dtype=np.float64) # 가. dtype 속성
arr3 = arr1.astype(np.float64)
print("1. 원본 데이터: ", arr1.dtype , arr1) # int32 [10 20 30]
print("2. int값을 float으로 변경 1: ", arr2.dtype , arr2) # float64 [10. 20. 30.]
print("2. int값을 float으로 변경 2: ", arr3.dtype , arr3) # float64 [10. 20. 30.]
2. float --> int 으로
data = [10.5, 20.7, 30.23, 100] # upcasting
arr1 = np.array(data)
arr2 = np.array(data , dtype=np.int64)
arr3 = arr1.astype(np.int64)
print("3. 원본 데이터: ", arr1.dtype , arr1) # float64 [10.5 20.7 30.23 100.]
print("4. float 값을 int 으로 변경 1: ", arr2.dtype , arr2) # int64 [10 20 30 100]
print("4. float 값을 int 으로 변경 2: ", arr3.dtype , arr3) # int64 [10 20 30 100]
print()
3. int --> bytes , str
data = [10,20,30]
arr1 = np.array(data)
arr2 = np.array(data , dtype=np.string_) # bytes 타입, np.string 안됨.
arr3 = arr1.astype(np.string_)
arr4 = np.array(data , dtype=np.str_) # str 타입 , dtype=np.str 가능
arr5 = arr1.astype(np.str_)
print("5. 원본 데이터: ", arr1.dtype , arr1) # int32 [10 20 30]
print("6. int 값을 bytes 으로 변경 1: ", arr2.dtype , arr2) # |S2 [b'10' b'20' b'30']
print("6. int 값을 bytes 으로 변경 2: ", arr3.dtype , arr3) # |S11 [b'10' b'20' b'30']
print("7. int 값을 str 으로 변경 : ", arr4.dtype , arr4) # <U2 ['10' '20' '30']
print("7. int 값을 str 으로 변경 : ", arr5.dtype , arr5) # <U11 ['10' '20' '30']
print(dir(np))
4. str --> int
data =['10','20','30']
arr1 = np.array(data)
arr2 = arr1.astype(np.int32)
print("8. str 값을 int 으로 변경 :",arr2) # [10 20 30]
arr3 = np.array(data).astype(np.int32)
print(arr3) # [10 20 30]
반응형
'IT' 카테고리의 다른 글
SanDisk Portable SSD 1TB 사용기.. 이.. (0) | 2023.06.21 |
---|---|
numpyProject 색인 / 값 변경 (0) | 2023.06.12 |
numpProject 2차원 배열 행렬 생성 (0) | 2023.06.09 |
numpProject 1차원배열_백터 삭제 _추가 및 삽입 (0) | 2023.06.09 |
SQL 문제_B & 마크다운 서식 (0) | 2023.06.09 |