numpy의 호출 방법
import numpy as np
np.array()로 Verctor 생성
a = [1, 2, 3, 4]
array1 = np.array([1, 2, 3, 4])
array2 = np.array(a)
print(array1)
print(array2)
[1 2 3 4]
[1 2 3 4]
np.array()로 Matrix 생성
a = [1, 2]
b = [3, 4]
matrix1 = np.array([a, b])
matrix2 = np.array([[1, 2], [3, 4]])
print(matrix1)
print(matrix2)
[[1 2]
[3 4]]
[[1 2]
[3 4]]
v1 = np.arange(0, 10) #0이상 10미만의 정수로 ndarray를 만들어라
print(v1)
[0 1 2 3 4 5 6 7 8 9]
v2 = np.arange(0, 10, 2) #0이상 10미만 2씩 증가하는 값의 array를 만들어라
print(v2)
[0 2 4 6 8]
np.arange로 Matrix 생성을 하고 싶다면 np.arange로 생성한 ndarray에 reshape 함수를 이용할 수 있다. 주의해야할 점은 만들고 싶은 Matrix의 원소의 개수와 arange로 생성된 ndarray의 원소의 개수가 같아야한다.
matrix_by_arange = np.arange(4).reshape((2, 2)) #reshape 함수 안에는 만들고 십은 shape의 사이즈를 넣으면된다.
print(matrix_by_arange)
[[0 1]
[2 3]]
np.ones((3, 3))
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
np.zeros((3, 3))
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
np.full((3, 3), 7)
array([[7, 7, 7],
[7, 7, 7],
[7, 7, 7]])
np.eye(3, 3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
np.linspace(0, 10, 5) # 0부터 10까지를 5등분 한다고 생각하면 된다.
array([ 0. , 2.5, 5. , 7.5, 10. ])
np.random.rand(2, 2)
array([[0.52089394, 0.36517463],
[0.48348571, 0.14953476]])
np.random.randn(3, 3)
array([[ 0.62869156, 1.07782007, 0.92929419],
[ 2.74440024, 0.73328124, -0.16418343],
[-0.78758572, -0.91650962, -0.43374428]])
np.random.randint(10, 100, (3, 3)) #low, high, shape 순서
array([[47, 49, 48],
[69, 72, 87],
[56, 76, 25]])
np.random.randint(10, 100)
57
np.random.randint(10, 100)
74
위의 두 코드를 보면 동일한 코드를 사용했는데 다른 값이 반환되는것을 볼수 있다. seed함수는 이런것을 방지해준다.
np.random.seed(0) # seed함수 안의 parameter는 실험 코드 같은것이라고 생각하면 편하다
np.random.randint(10, 100)
54
np.random.seed(0)
np.random.randint(10, 100)
54
위의 두 코드를 통해 seed함수를 이용하면 random모듈을 사용하였음에도 같은 값을 반환하는것을 볼 수 있다.
x = np.array([1, 2, 3, 4, 5, 6, 7])
np.random.choice(x, (2, 2)) # parameter replace 에 False 값을 부여하면 중복허용x
array([[6, 1],
[4, 4]])
np.random.choice(10, (2, 2), replace=False) # argument인 10을 np.arange(10)으로 인식
array([[8, 6],
[4, 0]])