<BUILT-IN METHODS AND FUNCTIONS>
<기본 배열 생성>
# zeros() 함수를 사용하여 0으로만 구성된 벡터 (Vector) 생성
np.zeros( 5 )
array([0., 0., 0., 0., 0.])
# 3행 4열짜리, 0으로 되어있는 행렬 (Matrix) 생성
np.zeros( (3,4) )
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
# ones() 함수를 사용하여 1로만 구성된 벡터 (Vector) 생성
np.ones( 7 )
array([1., 1., 1., 1., 1., 1., 1.])
# 4행 5열짜리, 1로 되어있는 행렬 (Matrix) 생성
np.ones((4,5))
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
<특정 값으로, 행렬 만들기>
np.full( (5,) , 10 )
array([10, 10, 10, 10, 10])
np.full( (3,4) , 10 )
array([[10, 10, 10, 10],
[10, 10, 10, 10],
[10, 10, 10, 10]])
<정수의 배열을 얻고자 할때>
# 0부터 9까지의 정수를 만드세요
range(10)
range(0, 10)
# range() 함수의 형태를 list로 확인하고자 할때
list( range(10) )
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 0부터 9까지를 포함한 array list 생성
np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 5부터 시작하여 14까지 포함한 array list 생성
np.arange(5, 14+1)
array([ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
# np.arange( start, stop, step) 까지 지정하여 활용 가능
np.arange(2 , 20+1, 2) => 2부터 시작하여 20까지 포함한 array list를 2칸씩 건너띄어서 생성
array([ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20])
<정수 말고 실수를 얻고자 할때>
# np.linspace(start, stop, num) 사용
np.linspace(0, 25, ) => 시작숫자, 끝숫자, 개수(무한대이기 때문에 개수를 필히 설정해줘야함)
array([ 0. , 0.51020408, 1.02040816, 1.53061224, 2.04081633,
2.55102041, 3.06122449, 3.57142857, 4.08163265, 4.59183673,
5.10204082, 5.6122449 , 6.12244898, 6.63265306, 7.14285714,
7.65306122, 8.16326531, 8.67346939, 9.18367347, 9.69387755,
10.20408163, 10.71428571, 11.2244898 , 11.73469388, 12.24489796,
12.75510204, 13.26530612, 13.7755102 , 14.28571429, 14.79591837,
15.30612245, 15.81632653, 16.32653061, 16.83673469, 17.34693878,
17.85714286, 18.36734694, 18.87755102, 19.3877551 , 19.89795918,
20.40816327, 20.91836735, 21.42857143, 21.93877551, 22.44897959,
22.95918367, 23.46938776, 23.97959184, 24.48979592, 25. ])
ㄴ 개수를 설정해 주지 않았기 때문에 해당 형태로 결과값이 출력됨
# 끝숫자를 포함하고 싶지 않을경우 개수 뒤에 endpoint= False 삽입 (기본적으로 빈칸으로 둘경우 endpoint= True로 인식하여 끝숫자를 포함시킴)
np.linspace(0, 25, 10, endpoint= False)
array([ 0. , 2.5, 5. , 7.5, 10. , 12.5, 15. , 17.5, 20. , 22.5])
< 한번더 개념 정리 >
- 1차원 배열 = 벡터 (Vector)
- 2차원 배열 = 행렬 (Matrix)
<이렇게 1차원 배열을 얻은 후, 우리는 이것을 가지고 여러차원으로 만들 수 있다.>
# reshape 을 이용
# 1차원 배열 생성
x = np.arange(2, 10+1)
x
array([ 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 크기를 확인후 2차원 배열의 경우 행 x 열 의 형태이므로 size로 크기를 확인후 변환 한다.
x.size
9
# 2차원 배열 형태로 reshape
x.reshape( (3,3) )
array([[ 2, 3, 4],
[ 5, 6, 7],
[ 8, 9, 10]])
# 2차원 배열 형태를 1차원 배열로 다시 변환 할수도 있다
X = x.reshape(3,3)
X.reshape(9)
array([ 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 생성한 배열의 차원 수 확인
x.ndim => 상단에서 x 는 1차원 배열로 생성하였기 때문에 1
1
X.ndim => 상단에서 대문자 X 는 2차원 배열로 생성하였기 때문에 2
2
<여러단계를 거치지 말고, 한번에 원하는 다차원 배열로 만들 수 있다.>
# 5부터 시작해서 25개의 정수를 만들고, 이를 5x5 행렬로 만드세요
1) 단계별로 진행할 경우
z = np.arange(5, 5+25)
z
array([ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29])
z.size
25
z.reshape(5,5)
array([[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24],
[25, 26, 27, 28, 29]])
2) 한꺼번에 만들어 보자
np.arange(5, 5+25).reshape(5,5)
array([[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24],
[25, 26, 27, 28, 29]])
<랜덤값으로 채워진 배열을 만들 수 있다.>
# random 모듈 import 우선 필요
import random
# 0과 1 사이의 실수를 생성 할때
random.random()
0.6568451424974039
# 정수를 랜덤하게 출력하고 싶은 경우 .randint를 사용
random.randint(1, 6+1) => 1과 6사이에서 랜덤하게 정수를 출력한다.
1
# random 에서 무작위로 출력되는 값에 패턴을 정하고 싶을 경우 .seed 함수 사용
random.seed(10)
random.randint(1, 6+1)
5
ㄴ seed 를 사용하여 random 을 실행할경우 일정한 패턴으로 값이 출력된다.
# 1부터 6까지의 숫자를 랜덤으로 10개 필요하다.
np.random.randint(1, 6+1, 10)
array([3, 3, 5, 3, 5, 2, 3, 3, 1, 3])
# 임의의 실수값으로 1차원 배열 생성
np.random.random( 10 )
array([0.04842057, 0.35712271, 0.66569338, 0.01138961, 0.10791777,
0.9010131 , 0.79487876, 0.81146098, 0.64027806, 0.62477951])
# 임의의 실수값으로 2차원 배열 생성
np.random.random( (2,3) )
array([[0.62266957, 0.35034518, 0.08245739],
[0.19938447, 0.56933138, 0.92564234]])
< np.random.randint(start, stop, size = shape) 시작값과 끝값을 줄 수 있다 >
# 1과 6 사이의 정수로 2행 6열의 2차월 배열 생성
np.random.randint(1, 6+1, (2,6))
array([[2, 5, 3, 1, 4, 4],
[4, 1, 2, 5, 3, 4]])
# 이렇게 범위를 설정하여 원하는 형태의 배열을 생성 할수 있다.
다음 게시글에서 계속
'PYTHON LIBRARY > NumPy Library' 카테고리의 다른 글
Python NumPy로 데이터 분석하기 : Boolean 연산부터 Broadcasting까지 (0) | 2024.04.08 |
---|---|
Python NumPy 슬라이싱과 인덱싱 : 효율적인 데이터 접근 방법 ndarray[], copy() 활용 (1) | 2024.04.08 |
Python Numpy로 데이터 분석하기: 최대값, 최소값, 평균 등 기초 통계 및 축(axis)별 연산 (0) | 2024.04.05 |
Python에서 데이터 저장 및 불러오기 : NumPy의 save와 load 함수 사용법 (0) | 2024.04.04 |
Python과 NumPy 기초 : 다차원 배열과 선형대수학 라이브러리 시작하기 (1) | 2024.04.03 |