본문 바로가기
Python/Build setting

[Numpy]넘파이 배열

by 소소한 혜밍씨 2022. 8. 24.

Numpy 배열

 

모두 같은 유형의 값이며 음수가 아닌 정수의 튜플로 인덱싱된다.

 

차원의 수는 배열의 랭크이며 배열의 shape은 각 차원별 배열 크기의 튜플이다.

 

중첩 된 파이썬 리스트로부터 numpy 배열을 초기화 할 수 있고 대괄호를 사용하여 요소에 접근 할 수 있다.

 

 

 

 

1. Numpy 배열 생성하기

 

먼저 넘파이 배열을 생성하고 차원과 형태, 데이터타입을 확인해보자.

 

a = np.array([1, 2, 3])
print(a)
print(type(a), a.ndim, a.shape, a.dtype)



#출력
[1 2 3]
<class 'numpy.ndarray'> 1 (3,) int64

 

출력된 결과의 타입을 살펴보면

 

[1, 2, 3] 의 1차원, shape은 3,  문자원소를 포함한 넘파이 배열이 생성된 것 을 확인할 수 있다.

 

shape이 (3, ) 로 출력된 이유는 튜플형태이기 때문!

 

원소의 형태를 따로 지정하지 않을 경우 default 로서 문자로서 출력이 되는 것도 확인할 수 있다.

 

 

 

 

2. np.array 와 asarray 차이점

 

먼저 코드를 확인해보자

 

a = np.array([1, 2, 3])
b = np.asarray(a)



# 출력
a = [1 2 3]
b = [1 2 3]

 

결과는 동일하게 출력된다.

 

그러나 copy data 를 생성하는지에서 그 차이를 확인할 수 있다.

 

# a, b 각각 다른 방법으로 array 생성
a = np.array([1, 2, 3])
b = np.asarray(a)


# b의 첫 번째 요소 변경
b[0] = 9


# a, b 결과 확인
a = [9 2 3]
b = [9 2 3]

 

asarray의 경우 copy data 를 생성하지 않으므로 변경사항이 동일하게 저장된다.

 

 

 

그럼 np.array는 어떨까?

 

# a, b 각각 다른 방법으로 array 생성
a = np.array([1, 2, 3])
b = np.asarray(a)


# b의 첫 번째 요소 변경
b[0] = 9


# a, b 결과 확인
a = [9 2 3]
b = [9 2 3]


# 변경된 a를 c에 새롭게 저장
c = np.array(a)


# c의 첫 번째 요소 변경
c[0] = 1


# a, b, c 결과 확인
a = [9 2 3]
b = [9 2 3]
c = [1 2 3]

 

np.array로 저장된 c의 변경사항이 a에 동일하게 적용되지 않았다.

 

이는 np.array의 경우 또 다른 나(데이터) 자신인 copy_data를 새로 생성하기 때문이다.

 

 

 

 

 

 

댓글