ndarray 생성과 변환

코드싸개·2020년 12월 15일
1

ndarray보다 편하게 생성하기

ndarray에 각각 값을 넣어서 생성하는 것이 아닌 보다 쉽게 생성하는 방법이 있는데, 바로 arange, zeros, ones 입니다.

sequence_array = np.arange(10)
print(sequence_array)
print(sequence_array.dtype, sequence_array.shape)

zero_array = np.zeros((3, 2), dtype='int32')
print(zero_array)
print(zero_array.dtype, zero_array.shape)

one_array = np.ones((3, 2))
print(one_array)
print(one_array.dtype, one_array.shape)

[Output]

[0 1 2 3 4 5 6 7 8 9]
int64 (10,)
[[0 0]
 [0 0]
 [0 0]]
int32 (3, 2)
[[1. 1.]
 [1. 1.]
 [1. 1.]]
float64 (3, 2)

처음에 array를 생성할때 사용한 arange 메서드는 range()와 유사한 기능을 합니다.
zeros와 ones의 dtype 디폴트 데이터형은 float64입니다.

ndarray의 차원과 크기 변환하기

이번에 사용할 메서드는 reshape입니다.

array1 = np.arange(10)
print('array1:\n', array1)

array2 = array1.reshape(2, 5)
print('array2:\n', array2)

array3 = array2.reshape(5, 2)
print('array3:\n', array3)

[Output]

array1:
 [0 1 2 3 4 5 6 7 8 9]
array2:
 [[0 1 2 3 4]
 [5 6 7 8 9]]
array3:
 [[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]

reshape()에 행, 열 순서로 입력해서 reshape할 수 있으며, 당연히 데이터 갯수에 맞춰야합니다. 예를 들어 데이터의 갯수가 15개면 reshape(3, 5)는 가능하지만 reshape(4, 5)등은 불가능합니다.

array1 = np.arange(10)
print(array1)
array2 = array1.reshape(-1, 5)
print('array2 shape:', array2.shape)
array3 = array1.reshape(5, -1)
print('array3 shape:', array3.shape)

[Output]

[0 1 2 3 4 5 6 7 8 9]
array2 shape: (2, 5)
array3 shape: (5, 2)

-1의 의미는 자동으로 생성하라는 의미로, 행 또는 열을 5로 고정되어있을때 10개의 데이터가 호환될 수 있는 행 또는 열의 갯수는 2이므로 컴퓨터가 자동으로 계산해서 (2, 5) 또는 (5, 2)형태로 만들어낸 것을 알 수 있습니다.

Source: 파이썬 머신러닝 완벽 가이드 / 위키북스

profile
데이터 분석 공부용 벨로그

0개의 댓글