PYTHON/데이터분석

통계분석시각화 : Numpy -연산

sshhhh 2023. 9. 15.

행렬

-리스트로 계산불가, 함수 만들어야한다.

 

 

assert [조건], [오류메시지]

조건 : True이면 코드가 진행,  False: AssertionError 발생(생략가능)

def add(l1, l2):
  assert len(l1)==len(l2), " 조건 :행렬 더하기 연산은 요소의 길이가 같아야 한다."
  re=[]
  for i in range(len(l1)):
    re.append(l1[i]+l2[i])
  return re
ls1=[1,2]
ls2=[3,4]
ls3=add(ls1,ls2)
print(ls3)

"""
[4, 6]
"""

 

numby

행렬연산 내장되어있음

n1=np.array([1,2])
n2=np.array([3,4])
n3=n1+n2
print(n3)

"""
[4 6]
"""
#전치행렬 
n3=np.transpose(n2)
print(n3)

"""
[[1 3]
 [2 4]]
 """
 
#반전
n3=np.invert(n2)
print(n3)

"""
[[-2 -3]
 [-4 -5]]
 """
 
 
#역행렬 
#A*B 
n3 = np.linalg.inv(n2)
n4 = n2.dot(n3)
print(n4)

"""
[[1.0000000e+00 0.0000000e+00]
 [8.8817842e-16 1.0000000e+00]]
"""

여러 연산

n1 = np.random.randint(1, 100, 30, dtype=int)
print(n1)
print("길이 : ", len(n1))
print("평균 : ", n1.mean())

"""
[75 11 48 29 71 90 26 60 92 41 83 85 51 59 42 74 74 97 51 91  9 95 48 68
 86  7 27 88 42 21]
길이 :  30
평균 :  58.03333333333333
"""
n2=n1-n1.mean()
print("수평 이동한 후 평균 : ", n2.mean())


"""
수평 이동한 후 평균 :  -1.8947806286936005e-15
"""
print("최대값 위치 : ", n1.argmax())
print("최대값 : ", n1[16])
print("최대값 : ", n1.max())

"""
최대값 위치 :  14
최대값 :  85
최대값 :  96

"""
print("분산 : ", n1.var())
print("표준편차 : ", n1.std())

"""
분산 :  598.09
표준편차 :  24.455878638887626
"""
n2 = n1/n1.std()
print("스케일 조절한 후 표준 편차 : " , n2.std())
"""
스케일 조절한 후 표준 편차 :  1.0
"""
print("최솟값 : ", n1.min()) #n1으로 접근은 객체의 멤버메소드
print("최대값 : ", np.median(n1)) #np로 접근은 정적메소드
print("1/4분위값 : ",np.percentile(n1, 0.25)) 
print("3/4분위값 : ", np.percentile(n1, 0.75))

"""
최솟값 :  4
최대값 :  60.0
1/4분위값 :  4.0725
3/4분위값 :  4.2175
"""
print(n1)
print()
print("누적 합: ", np.cumsum(n1))

"""
[73 88 64  5 57 71 94 62  4 71 43 50 58 50 96 79 85 58 89 77 78 39 64 35
 30 49 56 29 92 27]

누적 합:  [  73  161  225  230  287  358  452  514  518  589  632  682  740  790
  886  965 1050 1108 1197 1274 1352 1391 1455 1490 1520 1569 1625 1654
 1746 1773]
"""

print("누적 곱 : ", np.cumprod(n1))

"""
      73                 6424               411136
              2055680            117173760           8319336960 ...~
"""

 

댓글