Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 달의조각
- 로지스틱회귀
- seaborn
- pandas
- python
- AND게이트
- OR게이트
- 머신러닝
- 선형회귀
- 씨본
- 데이터분석
- 판다스
- XOR게이트
- 우분투
- numpy
- 딥러닝
- NAND게이트
- 파이썬
- 데이터크롤링
- 리눅스
- 크롤링
- 퍼셉트론
- ubuntu
- 데이터프레임
- DataFrame
- 데이터시각화
- Deeplearning
- Perceptron
- 비지도학습
- linux
Archives
- Today
- Total
Charming ['ㅡ'] Ham !
Python | Numpy 기본 사용법 본문
728x90
반응형
728x90
In [7]:
# 넘파이 설치
# $ pip install numpy
# ndarray 만들기
# 넘파이 사용을 위한 넘파이 패키지 가져오기
import numpy as np
# 다양한 array 의 형태
A = np.arange(5)
B = np.array([0, 1, 2, 3, 4])
# 문자열 array
# array 는 모든 요소의 타입이 동일해야한다.
# 또한 str 을 int 로 바꿀순 없지만 반대는 가능하다.
# 따라서 모든 숫자를 문자로 바꿔버림, 요소의 형태에 주의할 것.
C = np.array([0, 1, 2, 3, '4'])
D = np.ndarray((5), np.int64, np.array([0, 1, 2, 3, 4]))
print(A)
print(type(A))
print("-"*50)
print(B)
print(type(B))
print("-"*50)
print(C)
print(type(C))
print("-"*50)
print(D)
print(type(D))
print("-"*50)
[0 1 2 3 4]
<class 'numpy.ndarray'>
--------------------------------------------------
[0 1 2 3 4]
<class 'numpy.ndarray'>
--------------------------------------------------
['0' '1' '2' '3' '4']
<class 'numpy.ndarray'>
--------------------------------------------------
[0 1 2 3 4]
<class 'numpy.ndarray'>
--------------------------------------------------
In [13]:
# 어레이의 크기 살펴보기
# 3가지의 크기가 있다.
# 1. size : 각 행렬의 원소 개수
# 2. shape : 행렬의 모양 (몇 행 몇 열)
# 3. ndim : 행렬의 축의 개수 (aixs 의 개수)
# 10개의 요소를 가진 어레이를, 2행 5열의 모양으로 변경
# 요소의 개수의 범위를 벗어난 모양으로 변경 불가능
# 예를들면, 10개의 요소로 3행 3열의 모양으로 변경 불가능
A = np.arange(10).reshape(2,5)
print(A.shape)
# 2행이으로 2개의 축을 가지고 있다.
print(A.ndim)
print(A.size)
print("-"*50)
# 특수행렬
# 넘파이는 수학적 행렬을 함수로 제공하는데
# 1. 단위행렬
# 2. 0행렬
# 3. 1행렬
# 위 3가지의 행렬을 제공하고 있다.
# 1행렬 : 인자가 모두 1인 행렬
print(np.ones([3, 3]))
print("-"*50)
# 0행렬 : 인자가 모두 0인 행렬
print(np.zeros([2, 3]))
print("-"*50)
# 단위행렬 : 행랼의 대각선 인자는 1, 나머지 인자는 0 인 행렬
print(np.eye(3))
(2, 5)
2
10
--------------------------------------------------
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
--------------------------------------------------
[[0. 0. 0.]
[0. 0. 0.]]
--------------------------------------------------
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
In [21]:
# 브로드캐스트
# 행렬과 상수의 연산은 행렬의 모든 요소에 연산이 적용되는데
# 이를 수행할 수 있는 기능이다. 행렬간 연산 역시 가능하다.
A = np.arange(9).reshape(3, 3)
print(A)
print("-"*50)
B = A * 2
print(B)
print("-"*50)
C = A + 2
print(C)
print("-"*50)
D = np.array([1, 2, 3])
E = A + D
print(E)
print("-"*50)
# 리스트의 인덱싱과 슬라이싱도 가능하다.
[[0 1 2]
[3 4 5]
[6 7 8]]
--------------------------------------------------
[[ 0 2 4]
[ 6 8 10]
[12 14 16]]
--------------------------------------------------
[[ 2 3 4]
[ 5 6 7]
[ 8 9 10]]
--------------------------------------------------
[[ 1 3 5]
[ 4 6 8]
[ 7 9 11]]
--------------------------------------------------
In [28]:
# random 패키지
# 넘파이는 다양한 의사 난수를 지원
# np.random.random() : 0~1 사이의 실수형 난수 하나 생성
# np.random.randint() : 지정된 범위 사이의 정수형 난수 하나 생성
# np.random.choice() : 지정된 어레이에서 하나를 랜덤으로 추출
# np.random.permutation() : 지정된 범위, 어레이에서 원소의 순서를 무작위 변경
# np.random.normal() : 정규 분포를 따르는 변수를 임의로 표본추출 해줌
# - np.random.normal(loc = 평균, scale = 표준편차, size = 추출개수) 의 서식으로 사용
# np.random.uniform() : 균등분포를 따르는 변수를 임의로 표본추출 해줌
# - np.random.uniform(low = 최소, high = 최대, size = 추출개수) 의 서식으로 사용
print(np.random.random())
print(np.random.randint(0, 10))
print(np.random.choice([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
print(np.random.permutation(10))
print(np.random.permutation([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
print(np.random.normal(loc = 0, scale = 1, size = 5))
print(np.random.uniform(low = -1, high = 1, size = 5))
0.3059263574746567
6
5
[7 1 3 8 4 6 9 2 5 0]
[3 2 8 7 0 5 4 6 9 1]
[-0.27845241 0.81957716 0.36789978 0.80582739 0.5235674 ]
[ 0.10783475 -0.48270124 -0.31421939 0.35364428 0.31922675]
In [34]:
# 전치행렬 : 행렬의 행과 열을 바꾼 행렬로, 행렬의 축을 서로 바꾸기 등에 사용
# 1. arr.T
# 2. np.transpose
# arr.T : 전치행렬로 바꾸고자하는 행렬.T 의 서식으로 사용
# 24를 요소로 갖는 2개의 3행 4열 어레이 생성
A = np.arange(24).reshape(2, 3, 4)
print(A)
print("-"*50)
# 4개의 3행 2열을 갖는 어레이로 전치
print(A.T)
print("-"*50)
print(A.T.shape)
print("-"*50)
# np.transpose
# 행렬의 축을 기준으로 어떻게 변환해 줄지 임의로 지정
# np.transpose(A, (2,1,0)) 은 A.T와 정확히 같습니다.
B = np.transpose(A, (2,0,1))
# 위의 A 어레이로, (2, 3, 4) 의 형태
print(A)
# A 어레이 중 첫번 째 행렬의 1행과 A 어레이 중 두번 째 행렬의 1행이, B 어레이 중 첫번 째 행렬의 1열, 2열이되고,
# A 어레이 중 첫번 째 행렬의 2행과 A 어레이 중 두번 째 행렬의 2행이, B 어레이 중 두번 째 행렬의 1열, 2열이되고,
# A 어레이 중 첫번 째 행렬의 3행과 A 어레이 중 두번 째 행렬의 3행이, B 어레이 중 세번 째 행렬의 1열, 2열이되고,
# A 어레이 중 첫번 째 행렬의 4행과 A 어레이 중 두번 째 행렬의 4행이, B 어레이 중 네번 째 행렬의 1열, 2열이된다.
print(B)
# B는 (4,2,3)의 shape를 가진 행렬
print(B.shape)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
--------------------------------------------------
[[[ 0 12]
[ 4 16]
[ 8 20]]
[[ 1 13]
[ 5 17]
[ 9 21]]
[[ 2 14]
[ 6 18]
[10 22]]
[[ 3 15]
[ 7 19]
[11 23]]]
--------------------------------------------------
(4, 3, 2)
--------------------------------------------------
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
[[[ 0 4 8]
[12 16 20]]
[[ 1 5 9]
[13 17 21]]
[[ 2 6 10]
[14 18 22]]
[[ 3 7 11]
[15 19 23]]]
(4, 2, 3)
In [35]:
# 모든 기본 통계 수치 계산해보기
def numbers():
X = []
number = input("Enter a number (<Enter key> to quit)")
while number != "":
try:
x = float(number)
X.append(x)
except ValueError:
print('>>> NOT a number! Ignored..')
number = input("Enter a number (<Enter key> to quit)")
return X
def main():
# 위 함수에서 받아온 리스트 배열
nums = numbers()
# 리스트배열은 넘파이 어레이로 변경
num = np.array(nums)
# 넘파이 명령어를 통한 기본 통계수치 계산
print("합", num.sum())
print("평균값",num.mean())
print("표준편차",num.std())
# num.median() 이 아님에 유의
print("중앙값",np.median(num))
main()
Enter a number (<Enter key> to quit)10
Enter a number (<Enter key> to quit)1
Enter a number (<Enter key> to quit)2
Enter a number (<Enter key> to quit)34
Enter a number (<Enter key> to quit)5
Enter a number (<Enter key> to quit)
합 52.0
평균값 10.4
표준편차 12.208193969625484
중앙값 5.0
728x90
반응형
'지식 정보 공유 > 코딩 : Coding' 카테고리의 다른 글
Python | 판다스를 활용한 데이터 탐색, 데이터 분석 (EDA) (0) | 2021.01.23 |
---|---|
Python | Heatmap, 데이터 시각화 (0) | 2021.01.22 |
Python | 시계열 데이터 시각화 (0) | 2021.01.21 |
Python | 데이터 시각화하기 / Visualization (0) | 2021.01.20 |
Python |구조화된 데이터(딕셔너리, 판다스, 데이터프레임) (0) | 2021.01.15 |