[Python 데이터 분석]파이썬 넘파이 ( Python Numpy ), 파이썬 넘파이 예제 (Python Numpy Example)
| 파이썬 넘파이(Python Numpy)
파이썬 넘파이(Numpy)는 파이썬에서 배열과 행렬들을 효율적으로 다룰 수 있게 해 주는 패키지로서 데이터 정보학계에서 광범위하게 쓰입니다.
| 파이썬 넘파이로 배열 및 행렬 만들기(Python Numpy Array, Matrix)
다음은 넘파이에 대한 여러 예제입니다.
import numpy as np
mylist = [1,2,3] # numpy array로 바구기
x = np.array(mylist)
print(x)
# array([1, 2, 3])
y = np.array([4,5,6])
print(y)
# array([4, 5, 6])
m = np.array([7,8,9], [10,11,12]) # 행렬 만들기
print(m)
'''[[ 7 8 9]
[10 11 12]]'''
matrix = np.array([4,2,1],[5,2,6],[1,1,1])
print(matrix)
'''
[[4 2 1]
[5 2 6]
[1 1 1]]
'''
print(m.shape) # shape를 이용하여 행렬의 차원 알아내기 ( 행, 렬 )
# (2, 3)
n = np.arange(0, 30, 2) # 0부터 30까지 2씩 차이로 출력함
# array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28])
n = n.reshape(3,5) # numpy 배열을 원하는 행렬로 재구성
'''
[[ 0 2 4 6 8]
[10 12 14 16 18]
[20 22 24 26 28]]
'''
o = np.linespace(0, 4, 9) # 0에서 4까지 9개의 수를 균일한 간격으로 출력
print(o))
# [ 0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. ]
t = np.linspace(1, 10, 20)
print(t)
'''
[ 1. 1.47368421 1.94736842 2.42105263 2.89473684
3.36842105 3.84210526 4.31578947 4.78947368 5.26315789
5.73684211 6.21052632 6.68421053 7.15789474 7.63157895
8.10526316 8.57894737 9.05263158 9.52631579 10. ]
'''
o.resize(3, 3) # o 배열을 3씩 나눈 리스트들의 행렬로 형태 바꾸기
print(o)
'''
[[ 0. 0.5 1. ]
[ 1.5 2. 2.5]
[ 3. 3.5 4. ]]
'''
np.ones((3, 2)) # 1로 가득찬 3x2 행렬 만들기
print(np.ones((3,2)))
'''
[[ 1. 1.]
[ 1. 1.]
[ 1. 1.]]
'''
np.zeros((2, 3)) # 0으로 가득찬 2x3 행렬 만들기
print(np.zeros((2,3)))
'''
[[ 0. 0. 0.]
[ 0. 0. 0.]]
'''
eye = np.eyes(3) # 크기가 3x3인 단위행렬 만들기
print(eye)
'''
[[ 1. 0. 0.]
[ 0. 1. 0.]
[ 0. 0. 1.]]
'''
diag = np.diag(y) # 배열을 사선형의 행렬데이터로 변환
print(diag)
'''
[[4 0 0]
[0 5 0]
[0 0 6]]
'''
rep = np.array([1, 2, 3] * 3) # 배열 반복
print(rep)
# [1 2 3 1 2 3 1 2 3]
rep1 = np.repeat([1, 2, 3], 3)
print(rep1)
# [1 1 1 2 2 2 3 3 3]
rep2 = np.repeat(['a','b','c'],4)
print(rep2)
# ['a' 'a' 'a' 'a' 'b' 'b' 'b' 'b' 'c' 'c' 'c' 'c']
p = np.ones([2, 3])
v = np.vstack([p, 2*p]) # 행렬을 수직으로 결합
print(v)
'''
[[ 1. 1. 1.]
[ 1. 1. 1.]
[ 2. 2. 2.]
[ 2. 2. 2.]]
'''
h = np.hstack([p, 2*p]) # 행렬을 수평으로 결합
print(h)
'''
[[ 1. 1. 1. 2. 2. 2.]
[ 1. 1. 1. 2. 2. 2.]]
'''
| 파이썬 넘파이 연산(Python Numpy Operation)
넘파이 자료구조 간의 연산 예제입니다.
x = np.array([1,2,3])
y = np.array([4,5,6])
print(x + y) # 요소끼리의 덧셈, 뺄셈, 곱셈, 나눗셈, 제곱
print(x - y)
print(x * y)
print(x / y)
print(x**2)
'''
[5 7 9]
[-3 -3 -3]
[ 4 10 18]
[ 0.25 0.4 0.5 ]
[1 4 9]
'''
x.dot(y) # dot product 연산 1*4 + 2*5 + 3*6
# 32
z = np.array([y, y**2])
print(len(z)) # 행렬의 행 수
# 2
print(z)
'''
[[ 4 5 6]
[16 25 36]]
'''
t = z.T # 전치연산 (transpose)
print(t)
'''
[[ 4 16]
[ 5 25]
[ 6 36]]
'''
z.dtype # 요소의 데이터 타입 보기
# dtype('int64')
z = z.astype('f') # 요소의 데이터 타입 바꾸기
z.dtype
# dtype('float32')
| 넘파이 인덱싱, 슬라이싱(Python Numpy Indexing, Slicing)
넘파이 인덱싱과 슬라이싱 예제입니다.
s = np.arange(13)**2
print(s)
# [ 0 1 4 9 16 25 36 49 64 81 100 121 144]
a, b, c = s[0], s[4], s[-1] # 인덱싱
print(a, b, c)
# 0 16 144
s[1:5]
# [1 4 9 16]
s[-4:]
# [81, 100, 121, 144]
s[-5::-2] # 오른쪽에서 5번째 숫자에서부터 왼쪽 방향으로 2씩 데이터 출력하기
# [64, 36, 16, 4, 0]
r = np.arange(36)
r.resize((6, 6))
old = np.array([[1,1,1],
[1,1,1]])
new = old
new[0, :2] = 0 # 첫번째 행의 2열까지 0으로 만들기
print(r)
print(old)
'''
[[ 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 35]]
[[0 0 1]
[1 1 1]]
'''
r[2, 2] # 2행 2열의 요소 접근
# 14
r[3, 3:6] # 3행의 3열부터 5열까지의 요소 접근
# [21, 22, 23]
r[:2, :-1] # 1~2행과 1~5행까지 접근 (-1은 맨 오른쪽 열을 의미)
'''
[[ 0 1 2 3 4]
[ 6 7 8 9 10]]
'''
r[-1, ::2] # 마지막행에서 0부터 오른쪽 방향으로 2씩 데이터 출력
# [30, 32, 34]
print(r>30)
'''
[[False False False False False False]
[False False False False False False]
[False False False False False False]
[False False False False False False]
[False False False False False False]
[False True True True True True]]
'''
r[r>30] # r 행렬에서 30보다 큰 숫자들의 리스트 ( r> 30에서 True, False로 데이터 결정 )
# [31, 32, 33, 34, 35]
r[r>30] = 30
print(r)
'''
[[ 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 30 30 30 30 30]]
'''
참고자료 : https://www.coursera.org/learn/python-data-analysis
출처: https://engkimbs.tistory.com/664?category=763908 [새로비]
'Python > 파이썬 데이터 분석' 카테고리의 다른 글
[Python 데이터 분석] groupby 집계함수 예제(Python groupby) (0) | 2021.03.27 |
---|---|
[Python, 데이터분석] 판다스 관용 해법 사용하기: Pandorable한 코드(Idiomatic Pandas: Pandorable Code), 메서드 체이닝(Method Chaining) (0) | 2021.03.27 |
[Python, 데이터분석] 데이터 프레임 합치기, 조인 예제(DataFrame Join, Merge) (0) | 2021.03.27 |
[Python, 데이터분석] 파이썬 판다스(Python Pandas), 시리즈(Series), 데이터프레임(Python Dataframe) (0) | 2021.03.27 |
[Python 데이터 분석] 파이썬 람다 ( Python lambda ) (0) | 2021.03.27 |
[Python 데이터 분석] 파이썬 날짜 처리 ( Python Dates and Times ) (0) | 2021.03.27 |
[Python 데이터 분석] 파이썬 딕셔너리 (Python Dictionary) (0) | 2021.03.27 |
[Python 데이터 분석] 파이썬(Python) 문자열(String) 처리 모음 (0) | 2021.03.27 |