스마트 인재개발원/Python 기초

2021-04-11 파이썬 라이브러리(스마트인재개발원)

#ndarray 클래스 n - dimension araay => 배열  n차원 배열
# sum(), sqrt() , mean()
#선형대수, 난수생성, 푸리에 변환 

#import numpy as np 
#동일한 자료형을 가지는 값들이 배열 형태로 존재함
        

import numpy as np 

np.array([1,2,3])

list1 = [1,2,3,4,5]
list1

np.array(list1)

y=type(list1)

#2차원 어레이 생성하기
arr1 = np.array([1,2,3,4,5])
arr2 = np.array([[1,2,3],[4,5,6]])
arr2

#np.ndarray 각차원의 길이를 알려주는 키워드 
arr2.shape
arr1.shape

len(arr)

len(arr2)

arr2

arr2.shape

len(arr2) #가로개수만큼 차원이 있다.!!!! 

print(arr1.size)
print(arr2.size)

print(arr1)
print(arr1.dtype)

print(arr2)
print(arr2.dtype) #ndarray의 데이터 타입을 확인하는 키워드 

arr0=np.array([0.1,0.2,0.3])
print(arr0.dtype)

#int32중 32 : 이 데이터를 나타내는 비트 수

print(arr.ndim)
print(arr2.ndim)
#차원의 수 표기

arr7 = np.array([[[1,2],
                  [3,4]],
                 
                 [[5,6],
                  [7,8]]]) #3차원배열 2차원을 만든 후에 3차원으로 전환
print("배열의 크기 {}".format(arr7.shape))
print("배열의 차원 {}".format(arr7.ndim))
print("배열의 개수 {}".format(arr7.size))

arr_zeros = np.zeros((3,4)) #zeros((array 크기)) : 원하는 크기만큼의 array를 0으로 생성하는 함수
print(arr_zeros) 

print()

arr_ones = np.ones((3,4))
print(arr_ones)

arr_full = np.full((6,5),7) #full 원하는 크기만큼의 array를 초기화 값으로 생성
print(arr_full)

list4 = []
for i in range(1,51):
    list4.append(i)
print(list4)

arr8 = np.arange(1,51)
print(arr8)

np.random.rand(2,3) #원하는 크기의 ndarray를 0~1무작위 소수값으로 초기화

np.random.randint(0,45, size=(2,3)) #randint(시작값, 끝값+1, size(원하는 Shape))


arr_type = np.array([1.2,3.4,9.8], dtype=np.int64)
arr_type

arr_type = arr_type.astype("float64")
arr_type

# Array 연산자

- array랑 array가 아닌 값과 연산
- array와 array이와의 연산

#array와 단일값 연산
dollar = np.array([1, 1.4, 2]) 

dollar

dollar*1200

#array와 array의 연산
arr = np.array((1,2,3))
arr+arr

arr2 = np.array((1,2,3,4)) #오류가남
arr+arr2

list5 = [1,2,3]
list6 = [4,5,6]
list5 + list6 #리스트는 연산 불가능 

# indexing & Slicing

arr = np.array([[1,2,3],
                [4,5,6]])

print(arr[0])
print(arr[0][1])
print(arr[0:2])

arr[1][1]

arr11 = np.arange(10)
arr11[3:8]

arr11[3:8] = 12
arr11

arr2 = np.arange(50).reshape(5,10)
arr2

arr_1 = np.arange(50) #reshape(1차원크기,2차원크기 원하는 모양으로)
arr_1 = arr_1.reshape((10, -1)) # array변경 

arr2[ : , :1]

- indexing은 값 하나를 가르킴 
- slicing은 여러 값을 되돌려주기 위해 array형태로 돌려줌

arr2[[2,1],[2,1]] #앞에는 앞에만 뒤에는 뒤에만  이건 좀 헷갈리는 부분 

#텍스트파일을 읽어 내용을 np.data로 변환 
data = np.loadtxt("height_weight.txt",delimiter=",")
#bmi지수 몸무게/ 키*키

height = np.delete(data,1,axis=0)
weight = np.delete(data,0,axis=0)

height = height/100

Bim_data = np.array(weight/(height**2))

print(Bim_data)

print(data.shape)
print(data.ndim)
print(data.size)
print(data.dtype)