ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [21.02.17] numpy와 친해지기 셋째 날
    AI/study log 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
+) 연산의 대상이 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