Python/Python Language

Numpy 배열(Array)에 대한 개념 설명

567Rabbit 2024. 4. 24. 14:40

NumPy [Numerical Python]


- 배열 작업에 사용되는 Python라이브러리 이다
- 선형 대수학, 푸리에 변환 및 행렬 영역에서 작업하기 위한 기능도 있다
- 숫자 파이썬을 의미한다
- List는 처리 속도가 느려서 최대 50배 빠른 배열 객채를 제공하는 것을 목표로 한다

 


설치 pip install numpy

import numpy as np     #별칭 np

 

 

 


슬라이싱

인덱스요소를 가져오는것을 의미한다. 라스트인덱스 미포함
Arr = np.array([1,2,3,4,5,6,7])
print(Arr[1:5])

 

 



Numpy의 데이터 유형


i - 정수
b - 부울
u - 부호 없는 정수
c - float
m - timedelta
M - datetime
O - object
S - string
U - unicode string
V - 다른 유형에 대한 고정된 메모리 덩어리(fixed chunk of memory for void)

 

ex)

데이터 유형이 4바이트 정수인 배열을 만든다
fo = np.array([1,2,3,4], dtype = 'i4')
print(fo)
print(fo.dtype)

 

 

 


배열의 데이터 유형 확인

.dtype
arr3 = np.array(['apple','banana','cherry']) 
print(arr3.dtype)


 


기존 array의 데이터 유형 변환


- astype()함수는 데이터유형 타입을 바꿔준다

 

down = np.array([1.1, 2.1, 3.1])
newarr = down.astype('i')
print(newarr)

숫자를 부울로 변경
bol = np.array([1,0,3]) #0 F 1 T
newbol = bol.astype(bool)
print(newbol)

 

 

 

 

 

배열 복사[새 배열]와 보기[원본배열]


복사본은 데이터를 소유하고 복사본에 대한 변경사항은 원래배열에 영향을 주지 않고 원래배열에 대한 모든 변경은 복사본에 영향을 주지 않는다

뷰는 데이터를 소유하지 않고 뷰에 대한 모든 변경사항은 원본array에 영향을 미치고 원본 array에 대한 변경사항은 view에 영향을 미친다

Copy = np.array([1,2,3,4,5])
view = Copy.copy()
Copy[0] = 42
print(Copy)
print(view)

 

 

 

 


Shape 

 

배열의 모양은 각차원의 요소수

 

NumPy 배열에는 해당 요소의 수를 갖는 각 인덱스가 있는 튜플을 리턴한다

 

아래에 예시 : 배열에 2차원이 있음을 의미합니다

Depth = np.array([[1,2,3,4],[1,2,3,4]])

 

첫번째 차원에는 2개의 요소가 있고 두번째 차원에는 4개의 요소가 있다

 

 



Reshape (배열의 재구성

 

- 배열의 모양을 변경하는 것을 의미한다

 

 

아래에 12개의 요소가 있는 다음 1차원 배열을 2차원 배열로 변환한다

Dimension = np.array([1,2,3,4,5,6,7,8,9,10,11,12])
custom = Dimension.reshape(4,3)
Dimension.reshape(2,3,2)

 



Flattening the arrays 배열 평면화 

 

- 배열을 병합한다는 말은 다차원 배열을 1차원 배열로 변환하는 것을 의미한다

= reshape(-1)

 

 

all = np.array([[1,2,3],[4,5,6],[7,8,9]])
merge = all.reshape(-1)

 

 




배열 검색

 

- 특정 값을 검색하고 일치하는 인덱스를 반환할 수 있다 where() 아래에 예시에서는 값이 4인 숫자를 검색

(인덱스가 출력된다)

find = np.array([1,2,3,4,5,4,4])
np.where(find == 4)


#값이 짝수인 인덱스를 찾습니다
twon = np.array([1,2,3,4,5,6,7,8])

np.where(twon%2==0)

 


#값이 홀수인 인덱스를 찾습니다
one = np.array([1,2,3,4,5,6,7,8])
np.where(one%2==1)

 

 


배열 정렬

 

- 요소를 순서대로 배치하는 것을 의미한다 sort()
twoarr = np.array([[3,2,4],[5,0,1]]) #차원을 바꾸지 않고 차원 안에 있는 요소 정렬
print(np.sort(twoarr))

 

 

 

배열 필터

 

- 기존 배열에서 일부 요소를 가져와 새 배열을 만드는 것을 필터링이라고 합니다

- 인덱스 0과 2의 요소로 배열을 만듭니다

 


tf = np.array([41, 42, 43, 44])
Null = [True, False, True, False]
notnull = tf[Null]
print(notnull)

 

 


# 원래 배열에서 짝수요소만 반환하는 필터배열을 만듭니다


qq = np.array([1,2,3,4,5,6,7]) #배열 초기화
filter_arr = [] #비어져 있는 리스트를 만듦
for element in qq :
    if element %2 ==0 :
        filter_arr.append(True)
    else:
        filter_arr.append(False)
newa = qq[filter_arr]
print(filter_arr)
print(newa)