[인공지능] NumPy 개념 및 예제(2)

강민범·2023년 3월 25일
0

reshape

import numpy as np

a = np.arange(12)

array[0,1,2,3,4,5,6,7,8,9,10,11]

a.reshape(3,4) // array[[0,1,2,3],[4,5,6,7],[8,9,10.11]]

a.reshape(6,-1) // array[[0,1],[2,3],[4,5],[6,7],[8,9],[10,11]]

인덱싱과 슬라이싱

인덱싱
자료 구조 내에서 1개의 항목에 접근하는 것

슬라이싱
연속적인 객체들의(예: 리스트, 튜플, 문자열) 범위를 지정해 선택해서 객체들을 가져오는 방법 및 표기법을 의미

ages = np.array([18,19,25,30,28])
print(ages[1:3]) //인덱스 1에서 2까지 
>>array([19,25])

print(ages[:2]) //인덱스 0에서 1까지
>>array([18,19])

#논리적인 인덱싱
y = ages > 20
print(y)
>>array([False,False,True,True,True])
print(ages[ages>20])
>>array([25,30,28])

2차원 배열의 인덱싱

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a[0,2])
>> 3

a[0,0] = 12
print(a)
>> array([[12,2,3],[4,5,6],[7,8,9]])

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a[0:2,1:3])
>>	array([[2,3],[5,6]])

View

슬라이싱을 사용하면 얕은복사로 인식하여 같은 메모리를 공유해서 b의 값을 변경하면 a도 똑같이 값을 변경하게된다.

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

b = a[0,:]

print(b)
>>array([1,2,3,4])

b[0] = 77

print(b)
>>array([77,2,3,4])

print(a)
>>array([[77,2,3,4],[5,6,7,8],[9,10,11,12]])

deep copy

copy()함수를 이용하며 b2가 값을 바꿔도 a의 값은 변하지 않는다.

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

b2 = a.copy()
b2[0][0] = 55
print(a[0][0])
>>1
profile
개발자 성장일기

0개의 댓글