본문 바로가기

programming

[Python] 파이썬 Numpy(넘파이)로 생성한 배열의 특징과 관련 함수/메서드

Numpy를 이용해서 만든 배열의 여러가지 특징들을 뽑아내는 함수들과 메서드에 대해 정리해보자.

 

[배열이 가진 성분들/ 관련 함수 및 메서드]

.ndim

.shape

.size

.dtype

type()

 

.reshape(행,열)

np.concatenate([배열1, 배열2, ...], axis = 0)

np.split(배열, [i], axis = 0)

 

np.sum(배열)

np.sum(배열, axis = 0)

np.min(배열)

np.max(배열)

np.mean(배열)

np.std(배열)

 

 

1. .ndim

 - 배열의 차원 알아보기

import numpy as np
my_arr = np.random.randint(0,10,(3,4))

[[2 6 8 8]
 [9 6 0 8]
 [6 0 6 4]]

print(my_arr.ndim) # 결과 : 2
 

 

2. .shape

 - 배열의 행*열 모양 알아보기

import numpy as np
my_arr = np.random.randint(0,10,(3,4))

[[2 6 8 8]
 [9 6 0 8]
 [6 0 6 4]]

print(my_arr.shape) # 결과 : (3,4)
 

 

3. .size

 - 배열요소의 개수 세기

import numpy as np
my_arr = np.random.randint(0,10,(3,4))

[[2 6 8 8]
 [9 6 0 8]
 [6 0 6 4]]

print(my_arr.size) # 결과 : 12

 

4. .dtype

- 배열요소의 데이터타입 알아보기

import numpy as np
my_arr = np.random.randint(0,10,(3,4))

[[2 6 8 8]
 [9 6 0 8]
 [6 0 6 4]]

print(my_arr.dtype) # 결과 : int64

 

5. type()

 - 배열 자체의 타입 알아보기

import numpy as np
my_arr = np.random.randint(0,10,(3,4))

[[2 6 8 8]
 [9 6 0 8]
 [6 0 6 4]]

print(type(my_arr)) # 결과 : <class 'numpy.ndarray'>
 

6. .reshpe(행*열)

 - 배열의 모양 바꾸기 

 - 배열요소의 갯수에 맞게 모양을 바꿀 수 있다.

 - 요소갯수의 약수로만 만들 수 있다.

 - 2차원 배열에서 --> 다른 N차원으로 변경 불가

import numpy as np
my_arr = np.random.randint(0,10,(3,4))

[[9 2 1 9]
 [8 5 4 9]
 [2 9 1 7]] 

re_arr = my_arr.reshape(2,6) 
# 결과 
[[9 2 1 9 8 5]
 [4 9 2 9 1 7]]

re_arr2 = my_arr.reshape(2,2,4) 
#결과 : ValueError: cannot reshape array of size 12 into shape (2,2,4)

re_arr3 = my_arr.reshape(5,3)
# 결과 : ValueError: cannot reshape array of size 12 into shape (5,3)

 

7. np.concatenate()

 - 배열 합치기 

 - axis = 0/1 로 지정해줌으로써 합치는 방향을 정할 수 있다.

 - axis = 0 : 세로방향으로 이어 붙이기 , 열의 숫자를 맞춰주어야 한다.

 - axis = 1 : 가로방향으로 이어 붙이기 , 행의 숫자를 맞춰주어야 한다.

 

import numpy as np

A = np.random.randint(0,10,(2,3))
B = np.random.randint(11,100,(4,3))

AB = np.concatenate([A,B], axis = 0)
# 결과 
[[ 3  4  3]
 [ 2  9  3]
 [68 80 60]
 [12 62 86]
 [53 34 19]
 [50 57 32]]

A = np.random.randint(0,10,(2,3))
C = np.random.randint(11,100,(2,4))

AC = np.concatenate([A,C], axis = 1)
#
[[ 0  4  6 68 95 80 33]
 [ 5  5  5 84 39 13 15]]
 

 

8. np.split()

 - 배열 나누기 , 쪼개기 

 - axis 를 설정해줌으로써 가로방향으로 쪼갤지, 세로방향으로 쪼갤지 정할 수 있다.

 - axis = 0 : upper/lower 

 - axis = 1 : left/right 

 

import numpy as np

my_arr = np.random.randint(0,10,(3,4))
[[9 2 1 9]
 [8 5 4 9]
 [2 9 1 7]] 

upper, lower = np.split(my_arr, [1], axis = 0)
# 결과
print(upper) 
[[6 1 4 4]]
print(lower)
[[5 5 1 6]
 [0 7 6 6]]

left, right = np.split(my_arr, [1], axis = 1)
# 결과 
print(left) 
[[6]
 [5]
 [0]]
print(right)
[[1 4 4]
 [5 1 6]
 [7 6 6]]​

 

9. sum()

 - 배열요소들의 합 구하기 

 - axis 설정으로 가로방향 누적합/ 세로방향 누적 합을 구할 수 있다.

import numpy as np

my_arr = np.random.randint(0,10,(3,4))

[[9 2 1 9]
 [8 5 4 9]
 [2 9 1 7]] 

print(np.sum(my_arr)) # 결과 : 51

print(np.sum(my_arr, axis = 0))
# 결과 
[11 13 11 16]

print(np.sum(my_arr, axis = 1))
# 결과 
[15 17 19]
 

 

10. np.min(), np.max(), np.mean(), np.std(), np.count_nonzero()

- np.min() : 배열 요소 중 최소값 구하기

- np.max() : 배열 요소 중 최대값 구하기

- np.mean() : 배열요소들의 평균 구하기 

- np.std() : 배열 요소들의 표전편차 구하기

- np.count_nonzero() : 배열요소들 중 0이 아닌 것의 갯수 

import numpy as np

my_arr = np.random.randint(0,10,(3,4))

[[9 2 1 9]
 [8 5 4 9]
 [2 9 1 7]] 

print(np.min(my_arr)) # 결과 : 0

print(np.max(my_arr)) # 결과 : 7

print(np.mean(my_arr)) # 결과 : 4.25

print(np.std(my_arr)) # 결과 : 2.2407216099581255

print(np.count_nonzero(my_arr)) # 결과 : 12