반응형
In [3]:
import numpy as np
Numpy 배열의 함수 이용하기¶
In [4]:
np.sqrt([1,2,3,4,5])
Out[4]:
In [5]:
np.log10([10,100,2000])
Out[5]:
In [9]:
np.set_printoptions(precision=2)
In [10]:
arr = np.arange(1,11)
arr
Out[10]:
In [11]:
np.log10(arr)
Out[11]:
In [12]:
np.sqrt(arr)
Out[12]:
In [ ]:
두개의 배열에서 큰 숫자 또는 작은 숫자만 추출하기¶
- np.maximum(배열1, 배열2)
- np.minimum(배열1, 배열2)
In [13]:
arr1 = np.random.randn(10)
arr1
Out[13]:
In [14]:
arr2 = np.random.randn(10)
arr2
Out[14]:
2개의 선언된 배열에서 큰값 또는 작은값만 지정하여 새로운 ndArray 배열 생성
In [15]:
arr3 = np.maximum(arr1,arr2)
arr3
Out[15]:
In [16]:
arr4 = np.minimum(arr1,arr2)
arr4
Out[16]:
np.argmax() , np.argmin()¶
- 배열내 최대값 또는 최소값의 인덱스를 반환한다.
- np.argmax(배열명), np.argmin(배열명)
- np.argmax(배열명, axis=0), np.argmin(배열명, axis=1)
In [171]:
arrA = ([1,100,-10,45, 33, 50, 200])
arrA
Out[171]:
In [172]:
np.argmax(arrA)
Out[172]:
In [173]:
np.argmin(arrA)
Out[173]:
In [19]:
arrB = ( [1, 2, 4, 7],
[9, 88, 6, 45],
[100, 6, 4, 88])
arrB
Out[19]:
세로열에서 제일 큰 값의 인덱스 표시¶
In [20]:
np.argmax(arrB, axis=0)
Out[20]:
가로행에서 제일 큰 값의 인덱스 표시¶
In [21]:
np.argmax(arrB, axis=1)
Out[21]:
In [ ]:
배열 원소 전체의 합과 평균 구하기¶
- 배열이름.sum()
- 배열이름.mean()
1~10까지의 합과 평균 구하기¶
In [30]:
arr1 = np.arange(1,11)
arr1
Out[30]:
In [31]:
arr1.sum()
Out[31]:
In [32]:
arr1.mean()
Out[32]:
3행3열의 정규분포를 이용한 난수 배열 생성 후 합과 평균 구하기¶
In [23]:
arr2 = np.random.randn(3,3)
arr2
Out[23]:
In [24]:
# 모든원소의 합
arr2.sum()
Out[24]:
In [25]:
# 모든원소의 평균값
arr2.mean()
Out[25]:
1~50 사이의 정수 난수로 구성된 4행 4열의 배열 생성 후 합과 평균 구하기¶
In [39]:
arr3 = np.random.randint(1,51,size=(4,4))
arr3
Out[39]:
In [40]:
arr3.sum()
Out[40]:
In [41]:
arr3.mean()
Out[41]:
각 열과 행 단위로 합 구하기¶
- 배열이름.sum(axis=0) : 열단위
- 배열이름.sum(axis=1) : 행단위
In [42]:
arr2d = np.random.randn(3,3)
arr2d
Out[42]:
In [43]:
# 세로 컬럼의 합
arr2d.sum(axis=0)
Out[43]:
In [44]:
# 가로 행의 합
arr2d.sum(axis=1)
Out[44]:
In [27]:
# 1~20 사이의 정수값을 이용해서 3행 2열 넘파이 배열 생성
arr2dInt = np.random.randint(1,21,size=(3,2))
arr2dInt
Out[27]:
In [28]:
# 세로 컬럼의 합
arr2dInt.sum(axis=0)
Out[28]:
In [29]:
# 가로 행의 합
arr2dInt.sum(axis=1)
Out[29]:
각 열과 행 단위로 평균 구하기¶
- 배열이름.mean(axis=0) : 열단위
- 배열이름.mean(axis=1) : 행단위
In [30]:
#
arr2dInt = np.random.randint(1,41,size=(2,5))
arr2dInt
Out[30]:
In [31]:
arr2dInt.mean(axis=0)
Out[31]:
In [32]:
arr2dInt.mean(axis=1)
Out[32]:
Numpy 배열의 병합( concatenate) 1¶
- np.vstack((배열명1,배열명2)) : 행으로 합치기
- np.hstack((배열명1,배열명2)) : 열로 합치기
In [33]:
a = np.array([1,2,3])
b = np.array([4,5,6])
행으로 합치기¶
In [34]:
np.vstack((a,b))
Out[34]:
열로 합치기¶
In [35]:
np.hstack((a,b))
Out[35]:
1행 3열인 두개의 ndArray 가로와 세로로 합치기¶
In [62]:
a = np.array([[1],[2],[3]])
a
Out[62]:
In [64]:
b = np.array([[4],[5],[6]])
b
Out[64]:
In [66]:
np.vstack((a,b))
Out[66]:
In [65]:
np.hstack((a,b))
Out[65]:
Numpy 배열의 병합( concatenate) 2¶
- 가로, 세로 방향으로 넘파이 배열 합치기
- np.concatenate((배열1, 배열2), axis=0/1)
- axis = 0 : 세로로 합치기
- axis = 1 : 가로로 합치기
In [36]:
a = np.array([[1,2,3]])
b = np.array([[4,5,6]])
In [37]:
a
Out[37]:
In [38]:
b
Out[38]:
np.vstack()과 비슷. 행으로 합치기¶
In [68]:
np.concatenate( (a,b), axis=0)
Out[68]:
np.hstack()과 비슷. 행으로 합치기¶
In [39]:
np.concatenate( (a,b), axis=1)
Out[39]:
In [72]:
a = np.arange(1,7).reshape(2,3)
a
Out[72]:
In [73]:
b = np.arange(7,13).reshape(3,2)
b
Out[73]:
In [74]:
a.dot(b)
Out[74]:
정렬과 관련된 함수 이용하기 - 1차원¶
- np.sort(배열이름) : 오름차순
- np.sort(배열이름)[::-1] : 내림차순
In [40]:
arr = np.random.randn(10)
arr
Out[40]:
In [41]:
np.sort(arr)
Out[41]:
In [42]:
np.sort(arr)[::-1]
Out[42]:
정렬과 관련된 함수 이용하기 – 2차원¶
- np.sort(배열이름, axis=0) – 열방향으로 정렬하기
- np.sort(배열이름, axis=1) – 행방향으로 정렬하기
In [43]:
arr2d = np.random.randn(3,4)
arr2d
Out[43]:
컬럼방향, 세로로 정렬하기
In [44]:
np.sort(arr2d,axis=0)
Out[44]:
In [47]:
np.sort(arr2d,axis=0)[::-1]
Out[47]:
행방향, 가로로 정렬하기
In [48]:
np.sort(arr2d,axis=1)
Out[48]:
In [49]:
np.sort(arr2d,axis=1)[::-1]
Out[49]:
In [51]:
names = np.array(['Charles','Julia',
'Hayoung','Charles',
'Hayoung','Julia',
'Julia'])
names
Out[51]:
In [83]:
ints = np.array([3,3,3,2,2,1,1,4,4])
ints
Out[83]:
In [84]:
np.unique(names)
Out[84]:
In [85]:
np.unique(ints)
Out[85]:
단위행렬(Identity)¶
- 대각선의 원소가 모두 1이며 나머지 원소는 모두 0인
- 구조는 정사각 행렬. 행수와 열수가 같다.
- np.identity(대각선숫자)
- np.identity(n=대각선숫자, dtype=데이타형)
In [52]:
# 데이터형은 실수
np.identity(3)
Out[52]:
In [53]:
# 정수형
np.identity(n=4, dtype=int)
Out[53]:
In [55]:
# 문자열형
np.identity(n=5, dtype=np.str)
Out[55]:
대각선이 1인 행렬만들기¶
- np.eye(N=1의숫자, M=열수, dtype=데이터형)
- np.eye(1의숫자) : 단위행렬과 같다. 정사각형 구조
- np.eye(1의숫자, 열수, k=startIndex)
- 행수와 열수가 달라도 된다.
1의 숫자가 3이고 컬럼수가 4인 정수형 배열
In [89]:
np.eye(N=3,M=4,dtype=int)
Out[89]:
단위행렬과 같다. 1의 수가 5개인 실수형 배열
In [90]:
np.eye(5)
Out[90]:
1의 갯수가 4개이며 컬럼수는 7개, 1의 시작인덱스는 1행3열
In [91]:
np.eye(4,7,k=2)
Out[91]:
In [94]:
np.eye(4,7,k=0)
Out[94]:
대각행렬의 값을 추출함 : np.diag()¶
- np.diag(배열이름)
- np.diag(배열이름, k=startIndex)
In [96]:
matrix = np.arange(9).reshape(3,3)
matrix
Out[96]:
In [97]:
np.diag(matrix)
Out[97]:
In [98]:
np.diag(matrix, k=1)
Out[98]:
All& Any¶
- 배열의 데이터 전부(and) 또는 일부(or)가 조건에 만족 여부 반환
- any(조건식) => or
- all(조건식) => and
In [58]:
a = np.arange(10)
a
Out[58]:
In [60]:
# 넘파이배열에서는 비교 조건식을 적용하면 각각 아이템을 비교하여
# True/ False 로 반환한다
a <= 0
Out[60]:
In [61]:
a > 5
Out[61]:
any, all => True/ False 한개만 반환¶
In [136]:
np.any(a<5)
Out[136]:
In [137]:
np.any(a>5), np.any(a<0)
Out[137]:
In [138]:
np.all(a<5)
Out[138]:
In [62]:
np.all(a<100)
Out[62]:
비교 연산 1 - 두개 배열의 같은 위치 비교¶
- Numpy는 배열간의 크기가 동일할 때 원소간 비교의 결과를 Boolean Type 으로 반환하여 돌려준다
In [141]:
test_a = np.array([1,5,7])
test_b = np.array([5,2,1])
In [142]:
test_a > test_b
Out[142]:
In [143]:
test_a == test_b
Out[143]:
비교 연산 2¶
- np.logical_and (조건식1, 조건식2)
- np.logical_not (조건식)
- np.logical_or (조건식1, 조건식2)
In [150]:
a = np.array([1, 9, 0])
a
Out[150]:
In [151]:
np.logical_and(a > 0, a < 10)
Out[151]:
In [152]:
np.logical_or(a > 0, a < 10)
Out[152]:
In [154]:
np.logical_not(a < 5)
Out[154]:
np.where¶
- np.where(조건식, True, False) : 조건식에 만족하면 True 해당하는 값 표시, 그렇지 않으면 False에 해당하는 값 표시
- np.where(조건식) : 조건식에 만족하면 값 표시
In [155]:
a = np.array([1, 3, 0])
a
Out[155]:
a가 true 값이면 1번째 True 값이 표시, False이면 2번째 값 False 값이 표시¶
In [159]:
np.where(a > 1, 5, 10)
Out[159]:
b가 조건식에 만족하면 인덱스값이 출력¶
In [63]:
b = np.arange(5, 16)
b
Out[63]:
In [64]:
b > 10
Out[64]:
In [65]:
np.where(b > 10)
Out[65]:
np.isnan()¶
- np.isnan(넘파이배열명)
- Null 값인지 True / False
- np.NaN => 넘파이배열에서 null값을 의미한다.
In [168]:
c = np.array([np.NaN, 0, 4, 1.5])
c
Out[168]:
In [170]:
np.isnan(c)
Out[170]:
반응형