IT&컴퓨터공학/데이터분석개론
[데이터분석실전]NumPy
yan_z
2021. 2. 16. 16:44
NumPy Overview¶
In [3]:
import numpy as np
# numpy 를 import 하고, np 라는 이름으로 사용하자
ndarray : N 개의 dimensions array 라고생각하자. 들어가있는 데이터타입은 모두 동일해야한다.¶
In [6]:
original_data = np.random.randn(2,3)
# 2 by 3 형태의 매트릭스를 만드는데, 이때 standard normal distriution N(0,1) 사이의 값을 선택한다.
In [7]:
print(original_data)
[[-1.04237377 0.48626224 0.61142801]
[-0.24311897 0.87454671 -0.5134187 ]]
ndarray 에서 할 수 있는 수학적인 계산¶
In [13]:
print("곱셈도 할수 있어요 ! : \n\n {}".format(original_data*10))
곱셈도 할수 있어요 ! :
[[-10.42373774 4.86262241 6.11428011]
[ -2.43118972 8.74546712 -5.13418703]]
In [14]:
print("뺄셈도 할수 있어요 ! : \n\n {}".format(original_data-original_data))
뺄셈도 할수 있어요 ! :
[[0. 0. 0.]
[0. 0. 0.]]
In [15]:
print("덧셈도 할수 있어요 ! : \n\n {}".format(original_data+original_data))
덧셈도 할수 있어요 ! :
[[-2.08474755 0.97252448 1.22285602]
[-0.48623794 1.74909342 -1.02683741]]
In [17]:
print("shape 은 ndarray 의 N by M size를 나타냅니다 ! \n\n{}".format(original_data.shape))
shape 은 ndarray 의 N by M size를 나타냅니다 !
(2, 3)
In [18]:
print("dtype 은 ndarray안에있는 데이터 타입을 나타냅니다 ! \n\n{}".format(original_data.dtype))
dtype 은 ndarray안에있는 데이터 타입을 나타냅니다 !
float64
In [42]:
print("평균값도 구할 수 있어요 ! \n\n{}".format(np.mean(original_data)))
평균값도 구할 수 있어요 !
0.02888758579547594
In [43]:
print("표준편차도 구할 수 있어요 ! \n\n{}".format(np.std(original_data)))
표준편차도 구할 수 있어요 !
0.6806086565450783
같은 길이의 배열 여러개로 array를 만들면 자동으로 n 차원으로 구성해준다.¶
In [22]:
arr1 = np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(arr1)
[[ 1 2 3 4 5]
[ 6 7 8 9 10]]
만약 같은 길이의 배열이 아니라면 오류가 발생한다.¶
In [23]:
arr2 = np.array([[1,2,3,4,5],[6,7,8]])
print(arr2)
[list([1, 2, 3, 4, 5]) list([6, 7, 8])]
<ipython-input-23-49fb21b69455>:1: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray
arr2 = np.array([[1,2,3,4,5],[6,7,8]])
Universal Function : 일반적으로 사용되는 범용 함수¶
In [26]:
arr3 = np.random.randn(5,1)
print(arr3)
# 5 by 1 의 표준정규분포를 따르는 ndarray를 만든다.
[[ 0.64830993]
[-1.9023546 ]
[ 0.51296355]
[-0.7708257 ]
[ 1.08615076]]
In [27]:
print("절댓값을 취할 수 있어요! \n{}".format(np.abs(arr3)))
절댓값을 취할 수 있어요!
[[0.64830993]
[1.9023546 ]
[0.51296355]
[0.7708257 ]
[1.08615076]]
Data processing¶
In [34]:
arr_x = np.array([1,2,3,4,5])
arr_y = np.array([-1,-2,-3,-4,-5])
arr_cond = np.array([True,False,False,True,True])
In [40]:
arr_result1 = [(x if c else y) for x, y, c in zip(arr_x, arr_y, arr_cond)]
print("Foor Loop 를 사용하는 경우 :\n")
print(arr_result1)
# 만약 cond 가 True 면 x 를 , False 면 y를
Foor Loop 를 사용하는 경우 :
[1, -2, -3, 4, 5]
In [41]:
arr_result2 = np.where(arr_cond,arr_x,arr_y)
print("NumPy의 where 함수를 사용하는 경우 :\n")
print(arr_result2)
# True,False 로 나타낼 수 있는경우엔 where function 을 사용하는게 좋다.
NumPy의 where 함수를 사용하는 경우 :
[ 1 -2 -3 4 5]
In [ ]:
Universal Function