import numpy as np
arr = np.array([0, 1, 2, 3])
arr_range = np.array(range(1, 10))
arr_tuple = np.array((4, 5, 6, 7))
위치인자로 array_like 데이터를 전달하면 된다. 매개변수 object에 할당된다. array_like란, sequence 자료형 혹은 array를 return하는 __array__ 메소드를 가진 객체를 뜻한다.
2차원 ndarray(N-dimensional array)
np.array([[1, 2, 3,], [4,5,6]])
3차원 ndarray(N-dimensional array)
np.array([[[1, 2, 3,], [4,5,6]], [[7,8,9], [10, 11, 12]]])
arange()는 range()와 사용법이 비슷하다.
arange([start], stop, [step])이고 [ ]는 생략가능한 parameter를 뜻한다.
np.arange(10) # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(5,10) # array([5, 6, 7, 8, 9])
np.arange(1,10,2) # array([1, 3, 5, 7, 9])
ndarray의 형상을 변형한다.
np.arange(12) # array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
3행 4열로 변형하려면 아래와 같다.
np.arange(12).reshape(3,4)
# array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11]])
3차원도 당연히 가능하다. (2, 3, 2)의 shape으로 형상변경은 아래와 같다.
np.arange(12).reshape(2,3,2)
# array([[[ 0, 1],
# [ 2, 3],
# [ 4, 5]],
# [[ 6, 7],
# [ 8, 9],
# [10, 11]]])
구간을 원하는 개수만큼 등간격으로 나누어 ndarray형태로 return한다.
아래는 0부터 1까지의 구간을 5개만큼 등간격으로 나누어 ndarray를 return한다.
np.linspace(0,1,5) # array([0. , 0.25, 0.5 , 0.75, 1. ])
log도 위와 비슷하다.
np.logspace(1, 5, 5) # array([1.e+01, 1.e+02, 1.e+03, 1.e+04, 1.e+05])
모든 요소의 값이 0인 ndarray를 생성한다. shape을 인자로 전달하면 되며, 전달하는 형태는 int 혹은 int들의 tuple이다.
그리고 dtype 키워드 인자를 통해서 자료형을 지정해 줄 수 있다. Default는 numpy.float64이다.
np.zeros(3) # array([0., 0., 0.])
np.zeros((3, 3))
# array([[0., 0., 0.],
# [0., 0., 0.],
# [0., 0., 0.]])
np.zeros((2, 4, 3))
#array([[[0., 0., 0.],
# [0., 0., 0.],
# [0., 0., 0.],
# [0., 0., 0.]],
# [[0., 0., 0.],
# [0., 0., 0.],
# [0., 0., 0.],
# [0., 0., 0.]]])
모든 요소의 값이 1인 ndarray를 생성한다. 나머지는 np.zeros()와 비슷하다.
np.ones((2,4,3))
# array([[[1., 1., 1.],
# [1., 1., 1.],
# [1., 1., 1.],
# [1., 1., 1.]],
# [[1., 1., 1.],
# [1., 1., 1.],
# [1., 1., 1.],
# [1., 1., 1.]]])
모든 요소의 값을 지정한 값으로 채운 ndarray를 생성한다.
np.full(shape, fill_value) 이며, fill_value는 scalar 혹은 array_like 데이터를 받을 수 있다.
아래는 모든 요소가 5로 채워진 3행 2열 ndarray를 생성한다.
np.full((3,2), 5)
# array([[5, 5],
# [5, 5],
# [5, 5]])
정방 단위 행렬을 생성한다. 정방행렬(Square matrix)는 행과 열의 크기가 같은 행렬이고, 단위행렬(Identity matrix)는 정방행렬이면서 대각의 요소만 1, 나머지는 모두 0값을 갖는 행렬이다. 행과 열이 같으므로 int값 하나만 전달하면 되겠다.
np.identity(3)
# array([[1., 0., 0.],
# [0., 1., 0.],
# [0., 0., 1.]])
대각의 요소만 1, 나머지는 모두 0인 2D array를 생성한다.
np.eye(N, M) 이며, N은 row의 개수, M은 column의 개수이다. 이중에서 M은 optinal parameter이다.
np.eye(3)
# array([[1., 0., 0.],
# [0., 1., 0.],
# [0., 0., 1.]])
np.eye(2,3)
# array([[1., 0., 0.],
# [0., 1., 0.]])
두가지 기능을 가진다. 하나는 대각의 요소를 추출해내는 기능, 다른 하나는 대각 array를 생성하는 기능.
numpy.diag(v, k=0) 이며, v는 array_like 데이터를 받는다. k는 main diagonal을 기준으로 대각선을 선택한다.
v가 2D array이면, 그 v의 k번째 diagonal을 return한다.
v가 1D array이면, 대각의 요소가 v로 이루어진 2D array를 return한다.
아래는 대각의 요소가 [1,2,3]인 행렬을 얻고, 얻어낸 행렬을 다시 diag()함수로 대각의 요소들만 추출해내는 코드이다.
dia = np.diag([1,2,3])
# array([[1, 0, 0],
# [0, 2, 0],
# [0, 0, 3]])
np.diag(dia)
# array([1, 2, 3])
주어진 array와 같은 shape을 가지면서 요소가 모두 0인 array를 만든다.
아래는 2행 3열 array를 만드는 코드.
arr = np.arange(6).reshape(2,3)
arr
# array([[0, 1, 2],
# [3, 4, 5]])
아래는 위에서 만든 2행 3열 array와 같은 shape을 가지면서 요소가 모두 0인 array를 만드는 코드.
np.zeros_like(arr)
# array([[0, 0, 0],
# [0, 0, 0]])
주어진 array와 같은 shape을 가지면서 요소가 모두 1인 array를 만든다.
아래는 2행 3열 array를 만드는 코드.
arr = np.arange(6).reshape(2,3)
arr
# array([[0, 1, 2],
# [3, 4, 5]])
아래는 위에서 만든 2행 3열 array와 같은 shape을 가지면서 요소가 모두 1인 array를 만드는 코드.
np.ones_like(arr)
# array([[1, 1, 1],
# [1, 1, 1]])
주어진 array와 같은 shape을 가지면서 모든 요소를 지정한 값으로 채운 array를 만든다.
아래는 2행 3열 array를 만드는 코드.
arr = np.arange(6).reshape(2,3)
arr
# array([[0, 1, 2],
# [3, 4, 5]])
아래는 위에서 만든 2행 3열 array와 같은 shape을 가지면서 요소가 모두 7인 array를 만드는 코드.
np.full_like(arr, 7)
# array([[7, 7, 7],
# [7, 7, 7]])
[0, 1) 구간의 random floats를 return한다. 원하는 개수를 인수로 넘겨주면 된다.
np.random.random(5) # array([0.43009645, 0.05558898, 0.33985519, 0.8738481 , 0.40706884])
np.random.randint(low, high=None, size=None) 이다.
high가 전달되지 않은 경우(dafault), [0, low) 구간에서 int value를 return한다.
high가 전달된 경우, [low, high) 구간에서 int value를 return한다.
size로 얻을 data의 개수를 지정할 수 있다.
아래는 [1, 100) 구간에서 5개의 int value를 얻어내는 코드.
np.random.randint(1, 100, 5) # array([55, 66, 5, 46, 56])
NumPy array의 배열연산에 대해 알아보도록 하자.