AIFFEL 2021.12.31

Jinoung Kim·2021년 12월 31일

Node9

array : 파이썬 내장 모듈

array.array 모듈은 문자, 정수, 부동 소수점 숫자와 같은 기본적인 값의 배열을 간결하게 표현할 수 있는 객체 형을 정의합니다. 배열은 시퀀스 형이며 리스트와 매우 비슷하게 행동합니다만, 그곳에 저장되는 객체의 형이 제약된다는 점이 다릅니다. 형은 객체 생성 시에 단일 문자인 형 코드(type code)를 사용하여 지정됩니다

import array as arr
myarray = arr.array('typecode'[,[initial value]])
typecode : b, B, u, h, H, i, I, l, L, q, Q, f or d

myarray = arr.array('i', [1, 2, 3])
myarray.append(4) #index end에 추가, 동일한 크기와 타입으로 해야 함
myarray.insert(4, 5) #index, value

ndarray 만들기 : numpy 모듈에서 제공하는 array

  • import numpy as np
  • np.arange()와 np.array([])로 생성
a = np.arange(5)
print(a) #[0 1 2 3 4] , value값 사이에 , 가 없네!!
print(type(a))  # <class 'numpy.ndarray'>

b = np.array([0, 1, 2, 3, 4])
print(b)  #[0 1 2 3 4]
print(type(a))  # <class 'numpy.ndarray'>
#array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0,
      like=None)
      
c = np.array([0, 1, 2, 3, '4']) 
print(c) #['0' '1' '2' '3' '4']  type 동적변환 발생 (문자열을 모두 숫자로 바꿀 수는 없지만 숫자는 모두 문자열로 바꿔 줄 수 있다)

d = np.array([0,1,2,3,[4,5],6], dtype=object) #type 변환이 발생하지 않음

e = np.ndarray((5,), np.int64, np.array([0,1,2,3,4]))
#ndarray(shape, dtype=float, buffer=None, offset=0,
        strides=None, order=None)

ndarray 메소드

ndarray.size : 행렬 내 원소의 갯수
ndarray.shape : 행렬의 모양
ndarray.ndim : 행렬의 축(axis)의 갯수
ndarray.dtype : 행렬 내 원소의 data형
reshape() : 행렬의 모양을 변경, 원소의 갯수는 같아야 함

a = np.arange(10).reshape(2, 5) #길이 10인 1차원 행렬을 2*5인 2차원 행렬로 변환
print(a.shape) #(2, 5)
print(a.ndim)  #2
print(a.size)  #10

VisibleDeprecationWarning

deprecate warning은 이제 더 이상 관리하지 않는 기능. 메서드를 deprecate 할 예정일 때는 기능은 성공적으로 실행시키고 error가 아닌 warning 문구로 경고. 그 기능을 더 이상 못쓰는 것은 아니지만 이제부터 관리를 하지 않을 테니 오류가 날 확률이 높다는 뜻.

특수 행렬 만들기

np.eye(3) #단위행렬
np.zeros([2, 3]) #0행렬
np.ones([3, 4]) #1행렬

random

np.random.random() #0에서 1사이의 실수형 난수 1개 생성
np.random.randint(0, 10) #0~9사이의 정수형 난수 1개 생성
np.random.choice([0, 1, 2, 3]) #리스트에 주어진 값중에 1개 선택하여 반환
np.random.permutation(10) #순열, 0~9까지 무작위로 섞인 배열 생성
np.random.normal(loc=0, scale=1, size=5) #정규분포, 평균(loc), 표준편차(scale), 추출개수(size)
np.random.uniform(low=-1, high=1, size=5) #균등분포, 최소(low), 최대(high), 추출개수(size)

전치행렬

arr.T : 행렬의 행과 열을 맞바꾸기
np.transpose : 축을 기준으로 행렬의 행과 열을 바꾸기

0개의 댓글