Numpy ( 3 )

2024. 7. 9. 10:52·빅데이터 분석가 양성과정/Python
목차
  1. NUMPY ARRAYS: CONCATENATING, FLATTENING AND ADDING DIMENSIONS
  2. Flatten VS Ravel
  3. FLATTEN
  4. RAVEL
  5. Flatten vs Ravel
  6. numpy.reshape()
  7. CONCATENATING ARRAYS - 배열 연결
  8. ADDING NEW DIMENSIONS - 차원 추가
  9. VECTOR STACKING - 벡터 쌓기
  10. BOOLEAN INDEXING - 참/거짓 인덱싱
  11. FANCY INDEXING
  12. WEIGHTED RANDOM CHOICE WITH NUMPY - 무작위 가중치 부여

NUMPY ARRAYS: CONCATENATING, FLATTENING AND ADDING DIMENSIONS

 

Flatten VS Ravel

FLATTEN


    
import numpy as np
A = np.array([[[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7]],
[[ 8, 9],
[10, 11],
[12, 13],
[14, 15]],
[[16, 17],
[18, 19],
[20, 21],
[22, 23]]])
A.shape

(3, 4, 2)


    
Flatten_X = A.flatten()
Flatten_X

array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])

 

RAVEL


    
Ravel_X = A.ravel()
Ravel_X

array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])

 

Flatten vs Ravel


    
import numpy as np
a = np.random.randint(0,10, (2,3))
a

array([[8, 9, 0], [1, 5, 8]])


    
print(f'변경전 {a}')
b = a.flatten()
b[0] = 10
print(f'변경후 {a}')
print(f'b : {b}')

변경전 [[8 9 0] [1 5 8]] 변경후 [[8 9 0] [1 5 8]] b : [10 9 0 1 5 8]


    
print(f'변경전 {a}')
b = a.ravel()
b[0] = 10
print(f'변경후 {a}')
print(f'b : {b}')

변경전 [[8 9 0] [1 5 8]] 변경후 [[10 9 0] [ 1 5 8]] b : [10 9 0 1 5 8]

⇒ ravel 은 b를 바꿔주면 a도 같이 바뀐다. 공유하고 싶지 않을때는 flatten

 

numpy.reshape()

  • numpy.reshape(a, newshape, order = 'C')

    
arr = np.array([[0, 1],
[2, 3],
[4, 5]])
np.reshape(arr, (2,3))

array([[0, 1, 2], [3, 4, 5]])


    
arr.reshape(2,3)

array([[0, 1, 2], [3, 4, 5]])


    
arr_data.reshape(-1,1)

array([[0], [1], [2], [3], [4], [5]])


    
arr_data.reshape(1,-1)

array([[0, 1, 2, 3, 4, 5]])


    
X = np.array(range(24))
X

array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])


    
X.reshape((3,1,8))

array([[[ 0, 1, 2, 3, 4, 5, 6, 7]],

   [[ 8,  9, 10, 11, 12, 13, 14, 15]],
   [[16, 17, 18, 19, 20, 21, 22, 23]]])

 

 

CONCATENATING ARRAYS - 배열 연결

  • numpy.concatenate((a1, a2, ...), axis=0, out=None, dtype=None, casting="same_kind")

    
x = np.array([11,22])
y = np.array([18,7,6])
z = np.array([1,3,5])
np.concatenate((x,y,z))

array([11, 22, 18, 7, 6, 1, 3, 5])


    
x = np.array(range(24))
x = x.reshape((3,4,2))
y = np.array(range(100,124))
y = y.reshape((3,4,2))

    
np.concatenate((x,y), axis = 0)

array([[[ 0, 1],

   [ 2, 3],

   [ 4, 5],

   [ 6, 7]],

 

   [[  8,   9],
    [ 10,  11],
    [ 12,  13],
    [ 14,  15]],

   [[ 16,  17],
    [ 18,  19],
    [ 20,  21],
    [ 22,  23]],

   [[100, 101],
    [102, 103],
    [104, 105],
    [106, 107]],

   [[108, 109],
    [110, 111],
    [112, 113],
    [114, 115]],

   [[116, 117],
    [118, 119],
    [120, 121],
    [122, 123]]])


    
np.concatenate((x,y), axis = 1)

array([[[ 0, 1],

   [ 2, 3],

   [ 4, 5],

   [ 6, 7],

   [100, 101],

   [102, 103],

   [104, 105],

   [106, 107]],

 

   [[  8,   9],
    [ 10,  11],
    [ 12,  13],
    [ 14,  15],
    [108, 109],
    [110, 111],
    [112, 113],
    [114, 115]],

   [[ 16,  17],
    [ 18,  19],
    [ 20,  21],
    [ 22,  23],
    [116, 117],
    [118, 119],
    [120, 121],
    [122, 123]]])

 

 

ADDING NEW DIMENSIONS - 차원 추가


    
x = np.array([2,5,18,14,4])
y = x[:, np.newaxis]
print(y)

[[ 2]

 [ 5]

 [18]

 [14]

 [ 4]]

 

VECTOR STACKING - 벡터 쌓기


    
A = np.array([3, 4, 5])
B = np.array([1,9,0])
np.column_stack((A,B))

array([[3, 1],

   [4, 9],

   [5, 0]])


    
np.row_stack((A,B))

array([[3, 4, 5],

   [1, 9, 0]])

 

BOOLEAN INDEXING - 참/거짓 인덱싱


    
x = np.array([2,5,18,14,18,18,4])
x == 18

array([False, False, True, False, True, True, False])

 

FANCY INDEXING


    
C = np.array([123,188,190,99,77,88,100])
A = np.array([4,7,2,8,6,9,5])
A<=5

array([ True, False, True, False, False, False, True])


    
C[[True, False, True, False, False, False, True]]

array([123, 190, 100])

 

WEIGHTED RANDOM CHOICE WITH NUMPY - 무작위 가중치 부여


    
from numpy.random import choice
professions = ["scientist",
"philosopher",
"engineer",
"priest",
"programmer"]
probabilities = [0.2, 0.05, 0.3, 0.15, 0.3]
choice(professions, p=probabilities)

'programmer’


    
programming_languages = ["Java", "C", "Python", "C++"]
weights = np.array([16, 15.2, 10, 6.1])
# normalization
weights /= sum(weights)
print(weights)
for i in range(10):
print(choice(programming_languages, p=weights))

[0.33826638 0.32135307 0.21141649 0.12896406]

Java

Java

C++

C

Java

Java

Python

C

Java

Python

'빅데이터 분석가 양성과정 > Python' 카테고리의 다른 글

Matplotlib ( 2 )  (0) 2024.07.09
Matplotlib ( 1 )  (0) 2024.07.09
Numpy ( 2 )  (0) 2024.07.09
Numpy ( 1 )  (0) 2024.07.09
Web Crawling - 네이버 금융 환율정보 / 시 / 블로그 / 뉴스  (2) 2024.07.09
  1. NUMPY ARRAYS: CONCATENATING, FLATTENING AND ADDING DIMENSIONS
  2. Flatten VS Ravel
  3. FLATTEN
  4. RAVEL
  5. Flatten vs Ravel
  6. numpy.reshape()
  7. CONCATENATING ARRAYS - 배열 연결
  8. ADDING NEW DIMENSIONS - 차원 추가
  9. VECTOR STACKING - 벡터 쌓기
  10. BOOLEAN INDEXING - 참/거짓 인덱싱
  11. FANCY INDEXING
  12. WEIGHTED RANDOM CHOICE WITH NUMPY - 무작위 가중치 부여
'빅데이터 분석가 양성과정/Python' 카테고리의 다른 글
  • Matplotlib ( 2 )
  • Matplotlib ( 1 )
  • Numpy ( 2 )
  • Numpy ( 1 )
분석가 황규진
분석가 황규진
공공기관 위험평가관련 부서에서 근무하고 있습니다.
글쓰기 관리
분석가 황규진
HGJ's Insight
홈
|
로그인
  • 전체 글 563
    • 개인 활동(일상) 3
      • 독서 2
      • 근황 공유 1
    • 개인 활동(공부) 49
      • Tableau Bootcamp 10
      • 금융 공부 5
      • 직무 공부 22
      • 강의 12
    • 개인프로젝트 4
      • 신용카드 연체 평가 모델 0
      • 대출 승인 여부 예측 모델 4
    • 자격증 7
      • 빅데이터분석기사 1
      • 정보처리기사 1
      • 경영정보시각화 1
      • SQL개발자(SQLD) 1
      • 데이터 분석 준전문가(ADsP) 1
      • 통계적품질관리(SPC) 1
      • AICE Associate 1
    • 코드 정리 11
      • 코드 정리 - Tistory 8
      • 코드 정리 - Python 3
    • 코딩테스트연습 116
      • SQL_프로그래머스 116
    • 취업사관학교 9기 199
      • 모닝스쿨 54
      • 스스로 모닝스쿨 125
      • 직무 스터디 20
      • 반성과 다짐 0
    • 빅데이터 분석가 양성과정 173
      • Python 88
      • Python - 머신러닝 26
      • Python - 딥러닝 31
      • PyQt 4
      • JavaScript 10
      • MySQL 13
      • Node.js 1
hELLO· Designed By정상우.v4.6.1
분석가 황규진
Numpy ( 3 )
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.