Python/Numpy
Numpy_01
BSHwan
2019. 8. 11. 17:14
반응형
넘파이란?¶
- Numeric + Python = Numpy(넘파이, 늄파이)
- 수학 및 과학 연산을 위한 파이썬 패키지
- 관련 사이트 : http://www.numpy.org
- 리스트와의 차이점 : 하나의 데이터형만 지원
- np.array 함수를 활용하여 ndarray 배열을 생성함
# 주의사항 : numpy 외부 모듈을 임포트하고 사용
import numpy as np
# 통상적으로 np로 별칭한다.
넘파이 임포트¶
In [1]:
import numpy as np
넘파이 버전 확인¶
In [2]:
np.__version__
Out[2]:
넘파이 배열 만들기¶
- np.array(리스트)
- 리스트 형태는 실수, 정수, 문자 넘파이 배열 가능
In [4]:
arrA = [ 1, 2, 3, 4, 5 ]
print(arrA, type(arrA) )
ndArray로 변경하기¶
In [6]:
matrixA = np.array(arrA)
print(matrixA, type(matrixA))
실수형 넘파이배열¶
In [9]:
matrixB = np.array([0.45, 5.5, 0, 3])
matrixB
Out[9]:
문자형 넘파이배열¶
In [8]:
matrixC = np.array(['a', 'b', 'c'])
matrixC
Out[8]:
자동 캐스팅¶
- 숫자+문자 => 문자
- 정수+실수 => 실수
- 넘파이배열에서는 한가지 데이터형만 지원한다.
In [10]:
matrixD = np.array([1, 2, 3, 'banana', 'cat'])
matrixD
Out[10]:
넘파이배열의 속성¶
- 넘파이배열명.shape : 구조
- 넘파이배열명.ndim : 차원 (ndim = number of dimension)
- 넘파이배열명.size : 전체갯수
In [12]:
arr1d = np.array([1, 4, 5, 10 ])
arr1d
Out[12]:
In [13]:
arr1d.shape
Out[13]:
In [15]:
arr2d = np.array([[1, 4, 5, 10 ], [10, 30, 50, 60]])
arr2d
Out[15]:
In [16]:
arr2d.shape
Out[16]:
In [18]:
arr2d.ndim
Out[18]:
In [19]:
arr2d.size
Out[19]:
초기값을 0 또는 1로 지정하기¶
- np.zeros(데이터갯수)
- np.zeros([행수,열수])
- np.ones(데이터갯수)
- np.ones([행수,열수])
In [20]:
arr1 = np.zeros(10)
arr1
Out[20]:
In [21]:
arr2 = np.zeros([2,2])
arr2
Out[21]:
In [22]:
arr3 = np.ones(10)
arr3
Out[22]:
In [23]:
arr4 = np.ones([2,2])
arr4
Out[23]:
np.empty()로 초기값 지정하기¶
- np.empty(숫자)
- np.empty((행수,열수))
- 초기값이 변형된다.
In [26]:
arr5 = np.empty([2,2])
arr5
Out[26]:
In [37]:
arr6 = np.empty(10)
arr6
Out[37]:
초기값을 1씩 증가되는 숫자값으로 지정하기¶
- np.arange(start,end,step)
- end 숫자값을 제외
- start ~ end-1 까지 step 값만큼 증가해서 생성
- 넘파이배열 생성
range(초기값, 마지막값, 단계)¶
In [38]:
range(10)
Out[38]:
In [39]:
range(1,11)
Out[39]:
In [40]:
range(0,11,2)
Out[40]:
In [41]:
for i in range(1,11):
print(i)
자동증가되는 ndArray¶
In [42]:
np.arange(20)
Out[42]:
In [43]:
np.arange(1,30,2)
Out[43]:
In [44]:
np.arange(0,30,5)
Out[44]:
Numpy 배열의 구조 변경¶
- 배열명.reshape(행수, 열수)
- Element의 객수는 동일하고 구조 변경
- 배열명.reshape(-1,행안의아이템수) : size를기반으로 row 개수 선정
2차원 배열 만들어 구조 변경하기¶
- np.array([[1,2,3,4,5],[6,7,8,9,10]])
- np.arange(1,11).reshape(2,5)
In [46]:
np.arange(1,11)
Out[46]:
In [47]:
np.arange(1,11).reshape(2,5)
Out[47]:
배열명.reshape(-1,행안의아이템수)¶
- 배열의 전체행수는? 전체아이템수/아이템수
In [48]:
myArray = np.array([10,20,40,90,100,20])
myArray
Out[48]:
In [49]:
# 한행에 2개씩 구성
myArray.reshape(-1,2)
Out[49]:
In [50]:
# 한행에 3개씩 구성
myArray.reshape(-1,3)
Out[50]:
flatten()으로 1차원 배열로 변경하기¶
- 넘파이배열.flatten()
In [51]:
arr2d = np.array([[1,4,5,6],[56,23,45,67],[8,4,6,10]])
arr2d
Out[51]:
In [52]:
arr2d.flatten()
Out[52]:
데이타형 표시와 변경¶
- type(변수/집합형...) : 데이터형 표시
- 배열명.dtype : data type
- 배열명.astype(데이터형) : 데이터형변환 => 캐스팅
데이터형 : float / int / np.str
In [55]:
# 정수형 넘파이 배열
arr1 = np.array([1,2,3,4,5])
In [56]:
# 배열명 전체의 데이터형 표시
type(arr1)
Out[56]:
In [57]:
# 배열을 구성하는 아이템의 데이터형 표시
arr1.dtype
Out[57]:
In [58]:
# 실수형 넘파이 배열
arr2 = np.array([1.1, 2.4 , 3, 4, 5])
arr2.dtype
Out[58]:
정수형 => 실수형 배열로 변경¶
In [62]:
arr1 = np.array([1,2,3,4])
arr1
Out[62]:
In [63]:
arr1.dtype
Out[63]:
In [64]:
arr2 = arr1.astype(float)
arr2
Out[64]:
In [65]:
arr2.dtype
Out[65]:
행열의 연산¶
- 같은 위치의 요소끼리 사칙 연산
In [69]:
arr1 = np.arange(20,26)
arr2 = np.arange(10,16)
print(arr1, arr2)
In [70]:
arr1 + arr2
Out[70]:
In [71]:
arr1 - arr2
Out[71]:
In [72]:
arr1 * arr2
Out[72]:
In [75]:
arr1 / arr2
Out[75]:
행렬의 인덱싱과 슬라이싱 - 1차원¶
- 리스트와 비슷
- 배열이름[인덱스번호]
- 배열이름[start:end]
In [77]:
animals = np.array([100, 200, 400, 6, 90])
animals
Out[77]:
In [78]:
animals[0]
Out[78]:
In [79]:
animals[-1]
Out[79]:
In [80]:
animals[0:2]
Out[80]:
행렬의 인덱싱과 슬라이싱 - 2차원¶
- 리스트와 비슷
- 배열이름[행, 열] / 배열이름[행][열]
- 배열이름[:,:] 전체출력
- 배열이름[start:end, start:end]
In [82]:
myArray = np.arange(1,31)
myArray
Out[82]:
In [90]:
myArray2 = myArray.reshape(5,6)
myArray2
Out[90]:
In [91]:
myArray2[0,5]
Out[91]:
In [93]:
myArray2[0][5]
Out[93]:
In [94]:
# 1열 출력하기
myArray2[:, 0]
Out[94]:
In [96]:
# 1행 출력하기
myArray2[0,:]
Out[96]:
In [97]:
# 전체 출력하기
myArray2[:,:]
Out[97]:
In [98]:
# 1,2행 출력하기
myArray2[0:2,:]
Out[98]:
In [100]:
# 2~4열 출력하기
myArray2[:,1:4]
Out[100]:
In [102]:
# 3~5행에서 3~5열
myArray2[2:6,3:6]
Out[102]:
::를 이용한 슬라이싱¶
- 배열이름[start:end:step]
- 배열이름[start:end:step, [start:end:step]
In [104]:
# 1차원 배열 선언
arr1 = np.arange(1,11)
arr1
Out[104]:
In [105]:
# 홀수번째 출력
arr1[::2]
Out[105]:
In [107]:
# 짝수번째 출력
arr1[1::2]
Out[107]:
In [108]:
# 0~4 인덱스중 홀수번째
arr1[0:5:2]
Out[108]:
In [111]:
# 2차원 넘파이 배열 선언
arr2 = np.arange(1,21).reshape(4,5)
arr2
Out[111]:
In [112]:
# 홀수번째 행 추출
arr2[::2,:]
Out[112]:
In [113]:
# 홀수번째 컬럼 추출
arr2[:,::2]
Out[113]:
In [ ]:
In [ ]:
반응형