2 minute read

1-1. N차원 배열 생성하기

배열 생성하기

np.array(): 넘파이 배열 생성

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

넘파이 배열 관련 정보 확인

arr.shape: 모양 확인

arr.ndim: 차원 확인

arr.size: 크기 확인

파이썬 array와 넘파이 array의 type() 차이점

  • 파이썬 array: <class ‘list’>
  • 넘파이 array: <class ‘numpy.ndarray’>

1-2. N차원 배열의 데이터 타입

데이터 타입 확인

arr.dtype: 데이터 타입 확인

arr = np.array([1, 2, 3])   # 자동으로 데이터 인식
print(arr, arr.dtype)       # 출력값: [1 2 3] int64

arr = np.array([1, 2, 3], dtype=np.float)   # 지정
print(arr, arr.dtype)                       # 출력값: [1. 2. 3.] float64
  • 데이터 타입을 명시하지 않은 경우 넘파이 알아서 가장 적합한 데이터 타입으로 설정됨
  • 출력값의 자료형 뒤의 숫자는 메모리에서 차지하는 크기를 나타냄
  • int형, float형이 공존한다면 float형으로 맞춰짐

데이터 타입 변환

arr.astype: 데이터 타입 변환

arr = np.array([1, 2, 3, 4])    # 자료형: int64
print(arr, arr.dtype)           # 출력값: [1 2 3 4] int64
arr = arr.astype(np.float32)
print(arr, arr.dtype)           # 출력값: [1 2 3 4] float32

파이썬 리스트와 넘파이 리스트와 다른 점

  • 파이썬 리스트: 다영한 데이터 타입 허용
  • 넘파이 리스트: 단일 데이터 타입만 허용

1-3. 정해진 형식의 N차원 배열 생성하기

정해진 형식의 N차원 배열 생성(1)

np.zeros(): 모든 원소가 0으로 된 배열 생성, 매개변수는 shape

np.ones(): 모든 원소가 1으로 된 배열 생성, 매개변수는 shape

np.full(): 모든 원소가 n으로 된 배열 생성, 매개변수는 shape, n

np.eye(): 행(m), 열(n)인 경우 m * n, 대각 원소가 1인 행렬 생성

  • k: 대각 원소 시작 지점 설정
arr = np.zeros([2, 2])
arr = np.ones([3, 5])
arr = np.full([3, 3], 7)
arr = np.eye(3, 4)
arr = np.eye(3, 4, k=1)   # k: 대각 원소 시작 지점 지정

정해진 형식의 N차원 배열 생성(2)

np.zeros_like(): 원래의 배열과 동일한 shape을 가짐, 원소 모두 0인 행렬 생성

np.ones_like(): 위와 동일, 모든 원소 1로 설정

np.full_like(): 위와 동일, 모든 원소 n으로 설정 (인자 하나 더 필요)

1-4. 특정 범위의 값을 가지는 N차원 배열 생성하기

특정 범위 지정

np.arange(start, stop, step)

  • start: 시작 위치
  • stop: 끝 위치(-1 까지 진행)
  • step: 간격(default 1)
arr = np.arange(9)          # stop
arr = np.arange(3, 13)      # start, stop
arr = np.arange(4, 13, 3)   # step 지정
arr = np.arange(stop=13, step=3, start=4)   # 위와 동일

균등한 간격 지정

np.linspace()

arr = np.linspace(0, 100, 12)   # 0부터 100까지 12개의 원소가 균등한 간격으로 출력

np.arange(), np.linspace()의 차이점

  • arange의 stop: stop미만까지가 범위
  • linspace의 stop: stop를 포함한 범위

np.logspace(): 밑이 base인 로그 스케일의 값

arr = np.logspace(1, 10, 10, base=2)  # 밑이 2인 로그 스케일
arr = np.logspace(1, 10, 10)          # base 지정 안할 시 상용로그 스케일

1-5. 난수로 이루어진 N차원 배열 생성하기

random 모듈 이용

np.random.normal(loc, scale, size): 정규 분포의 확률 밀도에서 표본 추출

  • loc: 정규분포의 평균
  • scale: 표준편차
  • size: 추출할 표본의 개수(행렬 가능)

np.random.rand(): 0~1 숫자를 균등한 비율로 추출

  • rand의 인자: 표본의 개수

np.random.randn(): -1~1의 범위를 정규분포로 출력, 즉 가오시안 분포의 표본 추출

  • randn의 인자: 표본의 개수

np.random.randint(low, high, size): 랜덤한 정수 추출

  • low: low 부터의 범위
  • high: high 미만의 범위
  • size: 표본의 개수

1-6. 시드(seed)값을 통한 난수 생성 제어

시드(seed)값 설정

시드를 고정하고 rand() 값을 출력하면 동일한 값이 나옴

np.random.seed(1)               # 시드 값 고정
arr = np.random.rand(10)
print("random num1: ", arr)

np.random.seed(1)               # 시드 값 고정
arr = np.random.rand(10)
print("random num2: ", arr)

위의 출력결과는 동일



인프런: 데이터 과학을 위한 파이썬 NumPy Basic

Tags:

Categories:

Updated: