본문 바로가기
카테고리 없음

[빅데이터분석 | Numpy] 2. 특수 배열 : zeros, empty, eye, linspace

by 솨앙 2024. 10. 14.
반응형

2024.10.03 - [빅데이터분석] - [빅데이터분석 | Numpy] 1. Numpy 란?, np.array

 

[빅데이터분석 | Numpy] 1. Numpy 란?, np.array

본 글은 대학교 강의를 듣고 공부한 내용을 정리한 글로 틀린 내용이 있을 수 있습니다.1. Numpy 란?- Python에서 과학적 컴퓨팅을 위한 기본 패키지(라이브러리)- 특히 배열에 대한 빠른 연산을 위한

sua0105.tistory.com

이전에 배열을 함께 만들어봤다.

배열 계산을 많이하고 이용하다보면 다음과 같은 경우가 필요하다.

- 배열을 초기화 해야하는 경우 : 알고리즘이나 계산을 시작하기 전에 배열을 초기화
- 배열의 크기 지정: 특정 크기의 배열을 미리 정의하고 싶을 때, 나중에 데이터를 채우기 쉽게 준비

 

이런 경우 많이 사용되는 배열들을 알고, 만들어보자.

1. zeros : np.zeros(shapes =(), dtype=())

  • 이는 모든 구성요소가 0인 배열이다.

(1) 1차원 배열

arr1 = np.zeros(5)
print(arr1)
print(arr1.shape)
print(arr1.dtype)

  • 먼저 1차원 0 배열을 만들어 봤다. np.array(n)을 해주면 n개의 원소로 구성된 배열이 만들어진다
  • 데이터 타입을 따로 지정해주지 않으면 float 형이 됨을 확인 할 수 있다.

(2) 2차원 배열, dtype 지정 안 함.

#0행렬 만들기 -2차원
arr2 = np.zeros(shape=(3,6))
print(arr2)
print(arr2.shape)
print(arr2.dtype)

  • np.zeros()에서 () 안에 모양을 지정해주었다. 역시 지정한데로 배열이 잘 나왔다.
  • 데이터 형식은 역시나 float형

(3) 2차원 배열, dtype 지정

arr2 = np.zeros(shape=(3,6),dtype=int)
print(arr2)
print(arr2.dtype)

  • 역시 데이터타입을 정수로 지정해주니, 0뒤에 . 이 사라지고 int형으로 잘 출력되었다.

2. empty array :  np.empty(<shape>,dtype=)

  • empty함수의 경우는 메모리의 현재 상태(쓰레기 값)를 그대로 사용합니다.
    • zero의 경우 모든 요소를 0으로 초기화 시켰던 점과 다른 점
arr = np.empty((2,2))
print(arr)
arr2 = np.empty((3,4))
print(arr2)

  • arr2처럼 우연히 0으로 나오는 경우도 있지만, 이는 0으로 초기화 되는 것이 아니라 우연히 할당 받은 메모리의 값이 0이었던 것
arr = np.empty((2,2),dtype = int)
print(arr)

  • 이렇게 데이터타입을 지정해 줄 수도 있다.

2. eye array : numpy.eye(N, M=None, k=0, dtype=float, order='C')

  • eye array는 '단위행렬'이라고 불리는 행렬로 대각선의 요소들만 1인 행렬이다.
  • 선형대수에서 단위행렬의 쓰임은 많지만 지금은 수학 게시물이 아니니 우선 넘어가자..!
- N : 행렬의 행 수
- M : 행렬의 열 수 - 보통은 정사각행렬로 N만 입력해줘도 된다.
- k : 주 대각선의 위치 설정 -> 양수면 위쪽으로 이동한다
- dtype : 데이터 타입 설정
- order : 메모리에서 행렬을 저장하는 방식 (C는 행 우선,F는 열 우선)
arr1= np.eye(3, dtype =int)
arr2 =np.eye(3,k=1)
print(arr1)
print(arr2)

  • arr1 은 평범한 단위행렬 생성이지만, arr2는 k 조건을 주었다.
  • k<0이면 대각선보다 아래의 대각선으로 k만큼 이동을하는 것
  • k>0이면 대각선보다 위로 k만큼 이동을 하는 것이다. 따라서 저러한 결과물을 얻을 수 있었다.

3. linspace array : numpy.linspace(start, stop, num=, endpoint=True, retstep=False, dtype=None)

NumPy에서 숫자 범위 내에서 일정한 간격으로 값을 생성하는 함수
- start : 시작 숫자
- stop : 끝 숫자
- num : 나눌 구간의 수
- endpoint : true 이면 끝 값을 포함한다.
- retstep : 수 간이 간격을 함께 출력
- dtype : 데이터 타입 설정
arr = np.linspace(2.0, 3.0, num=5, endpoint=False, retstep=True, dtype=float)
print(arr)

- 2.0과 3.0 사이를 0.2 간격으로 3.0을 포함하지 않은 체 나눔

arr = np.linspace(2.0,20.0, num =10, endpoint = True, retstep = True, dtype = None)
print (arr)

- 2.0과 20.0 사이를 10개로 2.0의 간격으로 나눈다.

 

반응형