파이썬 Numpy

강준호·2023년 3월 15일
0

파이썬 빅데이터

목록 보기
1/7

기본

ndarray : 1가지 type의 값들로 구성, axis = 차원
속성
ndarray.ndim : 차원수
ndarray.shape : 데이터 모양
ndarray.size : 전체 값 개수
ndarray.dtype : 값의 type
ndarray.itemsize : 각 값의 크기 (byte)

생성

np.array

  • np.array ( [1,2,3,4,5])

1~5 행 4개 열 1개로

np.zeros

  • np.zeros( (3,4) )

모든 값 0.0 으로

np.arange

ar1= np.arange(15).reshape (3,5)
# 1~14 까지 3행 5열로

np.arange(5, 20, 2)
# 5~19 까지 두개씩 뛰면서

랜덤

randn(모양) : 정규분포

np.random.randn(3,2)
# 3행2열 정규분포 랜덤값

randint (최소값, 최대값, size=) : 정수

np.random.randint(1, 100, size=6).reshape(3,2) 
#1~99까지 6개

axis에 따른 연산

주요 파라메터 : axis =차원 기준

ex) B 생성

B=np.arange(12).reshape (3,4)  
# 첫번째 차원 =3개 element , 두번째 차원 =각기 element

sum (axis=0 ) : 첫번째 차원으로 합

B.sum (axis=0) 
# B에서 행인 3개의 element 끼리 더함

sum (axis=1 ) : 두번째 차원으로 합

B.sum (axis=1) 
# B에서 2번째 차원인 열 4개의 element 끼리 더함

Indexing, slicing

인덱싱[, ,]

A[ i : j : k ]

# i부터 j-1까지의 범위 내에서 k개씩 뛰면서 가져오라는 것

print (A[(2,4),1]) # 이해안됨.

A[1:5:2, ::3]

A = np.arange(35).reshape(5, 7)
# A = [[ 0,  1,  2,  3,  4,  5,  6],
#      [ 7,  8,  9, 10, 11, 12, 13],
#      [14, 15, 16, 17, 18, 19, 20],
#      [21, 22, 23, 24, 25, 26, 27],
#      [28, 29, 30, 31, 32, 33, 34]]
print(A[1:5:2, ::3])

출력
# [[7, 10, 13],
#  [21, 24, 27]]
  • 1:5:2는 행의 범위 => 1,3 행만 선택
  • 그 뒤에 것은 열의 범위
  • ::는 전체를 뜻
  • 즉, ::3 은 전체 중에서 3씩 건너뛴다
#최종출력
[[7, 10, 13],

 [21, 24, 27]]

인덱싱: C[:, :, 1:2]

맨 뒤가 열, 그다음이 행, 그다음이 종이 장!

1차원(축 0): 3D 배열의 레이어(깊이)
2차원(축 1): 각 레이어 내의 행
3차원(축 2): 각 행 내의 열

인덱싱 표기법 'C[:, :, 1:2]'는 다음과 같이 읽을 수 있습니다.

: - 첫 번째 차원(모든 레이어)을 따라 모든 요소를 선택합니다.
: - 두 번째 차원을 따라 모든 요소를 선택합니다(각 레이어 내의 모든 행).
1:2 - 인덱스 1(두 번째 열)부터 시작하여 인덱스 2(포함하지 않음)까지 세 번째 차원을 따라 요소를 선택합니다.

A[np.array([0,2,4]), np.array([0,1,2])]

A = np.arange(35).reshape(5, 7)
# A = [[ 0,  1,  2,  3,  4,  5,  6],
#      [ 7,  8,  9, 10, 11, 12, 13],
#      [14, 15, 16, 17, 18, 19, 20],
#      [21, 22, 23, 24, 25, 26, 27],
#      [28, 29, 30, 31, 32, 33, 34]]
print(A[np.array([0,2,4]), np.array([0,1,2])])

출력
#[ 0, 15, 30]
  • 우선 np.array([0, 2, 4])는 행, np.array([0,1,2])은 열

  • 0,2,4번째 행을 뽑아오고:[ 0, 1, 2, 3, 4, 5, 6],[14, 15, 16, 17, 18, 19, 20],[28, 29, 30, 31, 32, 33, 34]

  • np.array([0,1,2])는 위에 행에서 0행의 0열 , 1행의 1열 2행의 2열을 뽑기

=> [ 0, 15, 30]

참고 출처: https://michigusa-nlp.tistory.com/20

0개의 댓글