In [7]:
import numpy as np
arr=np.array([[1,2,3],[1,2,3]])
arr.shape
Out[7]:
(2, 3)
In [8]:
arr=np.expand_dims(arr,-1) #내부값은 유지하고 차원 수를 늘리고 싶을대
arr #-1을 하면 차원수와 값의 위치가 변경된다
Out[8]:
array([[[1], [2], [3]], [[1], [2], [3]]])
In [9]:
arr.shape
Out[9]:
(2, 3, 1)
In [10]:
#0으로 채워진 np.array
zeros = np.zeros([3,3])
zeros
Out[10]:
array([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]])
In [11]:
zeros=np.zeros(1)
zeros
Out[11]:
array([0.])
In [15]:
#1로 만들기
ones = np.ones([10,5])
ones
Out[15]:
array([[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]])
In [16]:
#ones를 활용해서 특정 정수값 랜덤만들기
ones*5
Out[16]:
array([[5., 5., 5., 5., 5.], [5., 5., 5., 5., 5.], [5., 5., 5., 5., 5.], [5., 5., 5., 5., 5.], [5., 5., 5., 5., 5.], [5., 5., 5., 5., 5.], [5., 5., 5., 5., 5.], [5., 5., 5., 5., 5.], [5., 5., 5., 5., 5.], [5., 5., 5., 5., 5.]])
In [20]:
np.arange(5) #0~4 a~b-1의 정수 array생성
Out[20]:
array([0, 1, 2, 3, 4])
In [21]:
np.arange(1,5) # 1~4
Out[21]:
array([1, 2, 3, 4])
In [22]:
#arange와 reshape 활용하기
arr2=np.arange(9).reshape(3,3)
arr2
Out[22]:
array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
In [27]:
#Indexing
nums = [1,2,3,4,5]
nums[2:]
Out[27]:
[3, 4, 5]
In [43]:
nums=[1,2,3,4,[1,2,3]]
nums[4]
Out[43]:
[1, 2, 3]
In [ ]:
#array도 list처럼 인덱싱이 가능하다
In [54]:
data=np.random.randn(3,3)
data
Out[54]:
array([[ 0.69182466, -0.75348262, -0.26842239], [-0.48456792, 0.29615744, 1.0597146 ], [ 1.22603436, 2.10285786, 1.19448078]])
In [55]:
data<=0 #boolean
Out[55]:
array([[False, True, True], [ True, False, False], [False, False, False]])
In [56]:
data[data<=0] #특정 조건을 만족하는 값들만 불러오기
Out[56]:
array([-0.75348262, -0.26842239, -0.48456792])
In [57]:
data[data<=0]=1 #특정 조건을 만족하는 것들을 1로 변경하기
In [58]:
data
Out[58]:
array([[0.69182466, 1. , 1. ], [1. , 0.29615744, 1.0597146 ], [1.22603436, 2.10285786, 1.19448078]])
In [59]:
#######Broadcast############
#broadcast는 연산하려는 서로 다른 2개의 행렬의 shape가 같지 않고 한쪽의 차원이라도
# 같거나 or 갯수가 1개일때 이를 여러개 복사해서 연산하는 방법
import numpy as np
In [60]:
arr= np.arange(9).reshape(3,3)
arr
Out[60]:
array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
In [61]:
arr+3
Out[61]:
array([[ 3, 4, 5], [ 6, 7, 8], [ 9, 10, 11]])
In [62]:
arr*3
Out[62]:
array([[ 0, 3, 6], [ 9, 12, 15], [18, 21, 24]])
In [64]:
arr+np.array([1,2,3])
Out[64]:
array([[ 1, 3, 5], [ 4, 6, 8], [ 7, 9, 11]])
In [66]:
arr+np.array(1) # arr+1이랑 마찬가지
Out[66]:
array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
In [68]:
np.multiply(arr,3) #arr*3이랑 마찬가지
Out[68]:
array([[ 0, 3, 6], [ 9, 12, 15], [18, 21, 24]])
In [69]:
arr = np.random.randint(2,size=27).reshape(3,3,3) #0~(2-1)값을 27개 만들어서 3,3로 reshape해라
arr_2=np.random.randint(2,size=9).reshape(3,3)
In [70]:
arr
Out[70]:
array([[[1, 0, 0], [0, 1, 1], [1, 1, 1]], [[1, 1, 1], [1, 0, 1], [1, 1, 1]], [[1, 0, 0], [1, 0, 1], [0, 0, 0]]])
In [71]:
arr*arr2
Out[71]:
array([[[0, 0, 0], [0, 4, 5], [6, 7, 8]], [[0, 1, 2], [3, 0, 5], [6, 7, 8]], [[0, 0, 0], [3, 0, 5], [0, 0, 0]]])
In [72]:
np.sum(arr) #내부값들 전체 합
Out[72]:
17
In [74]:
np.max(arr)
Out[74]:
1
In [79]:
np.sum(arr+arr2,axis=1) #axis
Out[79]:
array([[11, 14, 17], [12, 14, 18], [11, 12, 16]])
In [80]:
np.mean(arr)
Out[80]:
0.6296296296296297
In [82]:
arr=np.array([1,6,3,7,3,2,9])
In [84]:
np.argmax(arr) #제일큰값의 index값 0부터 시작
Out[84]:
6
In [85]:
np.argmin(arr) #제일 작은값의 index값
Out[85]:
0
In [86]:
np.unique(arr) #array의 유일한 값들/set이라 보면 된다
Out[86]:
array([1, 2, 3, 6, 7, 9])
In [ ]:
728x90
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[Python].ipynb to .py (Window, Linux) / convert .ipynb to .py (0) | 2022.04.11 |
---|---|
[Jupyter notebook] 주피터 노트북 모양대로 티스토리에 글쓰기 (0) | 2021.06.23 |
[Numpy,Matplotlib] 4.이미지 시각화도 가능하다 (0) | 2021.06.18 |
[Numpy,Matplotlib] 3.시각화matplotlib.pyplot as plt (0) | 2021.06.18 |
[Numpy,Matplotlib] 1. 배열다루기+시각화의 기초 (0) | 2021.06.18 |