AI/study log

[21.02.17] numpy와 친해지기 셋째 날

땽뚕 2021. 8. 30. 00:00
728x90

5-4. 차원 축소 연산(dimension reduction) -> 행렬의 하나의 행에 있는 모든 원소들을 하나의 데이터 집합으로 보고 연산!

  1. 최대/최소: min, max, argmin, argmax
    • argmin: 최솟값의 위치(인덱스)
    • argmax: 최댓값의 위치(인덱스)
  2. 기술 통계(descriptive statistics): sum, mean, median, std, var, percentile
    percentile: 백분위 수
    - np.percentile(x,0)
    - np.percentile(x,25)
    - np.percentile(x,50),
    - np.percentile(x,75)
    - np.percentile(x,100)
  3. 불리언: all, any
  4. +) 연산의 대상이 2차원 이상인 경우, 어느 차원에서 계산할지 축(axis) 지정 -> axis=0 : 열 연산 -> axis=1 : 행 연산
    ex) x=np.array([[1,1],[2,2]])
    • x.sum() #6
    • x.sum(axis=0) #[3,3]
    • x.sum(axis=1) #[2,4]

    5-5. 정렬 -> sort() : 해당 객체의 자료 자체가 변하는 '자체 변화 메소드(in place method)'

    axis=0 axis=1 각각 정렬 가능 / 디폴트 값은 -1 -> 가장 안쪽 차원
    순서만 알고 싶으면 argsort() -> 인덱스 값으로 반환
    +) 특정 열을 기준으로 행 단위 오름차순으로 정렬!
    DB1=DB[:,DB[0].argsort()]
    원리

    • k=np.array([4,1,2,5,7])
    • k=k[[1,3,0,2,4]]
    • k -> [1,5,4,2,7]

    6. 난수 발생과 카운팅

    6-1. 시드 설정하기-> 사실 무작위 수가 무작위가 아니다!
    => 어떤 특정 시작 숫자를 정해주면, 컴퓨터가 정해진 알고리즘에 의해 난수처럼 보이는 수열을 생성. 그리고 이 시작 숫자를 시드라고 함!
    - np.random.seed(0) : 시드를 0으로 설정함

    6-2. 데이터의 순서 바꾸기와 샘플링 -> 순서는 shuffle로, 샘플링은 choice로!

    • shuffle : 자체 변환 함수라 사용 시 유의!
      - x=np.arange(10)
      - np.random.shuffle(x)
    • choice : 이미 있는 집합에서 무작위 선택
      - np.random.choice(a,size, replace=True, p=None)
      a는 배열, size는 추출할 크기, replace가 True 면 중복 추출 가능, p=[배열]이라면 배열의 확률대로 추출됨

    6-3. 난수 생성-> 3가지 메서드

    1. rand< -> 0과 1 사이의 정규 분포
      • np.random.rand(5)
      • np.random.rand(2,5)
    2. randn -> 기댓값이 0이고 표준 편차가 1인 표준 정규 분포(standard normal distribution)를 따르는 난수
      • np.random.randn(4)
      • np.random.randn(2,3)
    3. randint -> np.random.randint(low, high, size)
      • high가 없으면 0~low 사이 값
      • high가 있으면 low~high 사이 값
      • size 난수의 숫자
      예시
      • np.random.randint(10,size=4)
      • np.random.randint(10,20,size=10)
      • np.random.randint(10,20,size=(2,3))

    6-4. 정수 데이터 카운팅 -> unique
    데이터에서 중복된 값을 제거하고 중복되지 않은 값의 리스트를 출력한다. return_counts 인수를 True로 설정하면 각 값이 가진 데이터의 갯수로 출력!
    a=np.unique([11,11,2,2,34,34])
    index,count=np.unique(a,return_counts=True)

728x90