Lesson 05: numpy I
Import
Numpy: 벡터느낌
선언
기본연산 브로드캐스팅
기타수학연산지원
(array([ 2.71828183, 7.3890561 , 20.08553692]),
array([ 2.71828183, 7.3890561 , 20.08553692]))
Numpy: 인덱싱
인덱싱 1차원
- 선언
- 인덱스로 접근
- : 이용 (슬라이싱)
- 정수배열에 의한 인덱싱
- 부울값에 의한 인덱싱
응용하면?
리스트는 불가능
인덱싱 2차원
- 중첩리스트와 2차원 np.array 선언
- A의 원소 인덱싱
- A2의 원소 인덱싱
- A2에서만 되는 기술 (넘파이에서 제시하는 신기술, R에서는 기본적으로 쓰던것, 이중list는 불가능)
- 정수배열에 의한 인덱싱 & 슬라이싱!
1차원 배열의 선언
- 리스트나 튜플을 선언하고 형변환
- range()를 이용해서 선언하고 형변환
- np.zeros, np.ones
- np.linspace
array([0. , 0.09090909, 0.18181818, 0.27272727, 0.36363636,
0.45454545, 0.54545455, 0.63636364, 0.72727273, 0.81818182,
0.90909091, 1. ])
- np.arange
reshape
- reshape: ndarray의 특수한 기능
note: reshape은 a자체를 변화시키는것은 아님
- 다시 b를 a처럼 바꾸고 싶다
- reshape with -1
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]])
array([[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9, 10, 11, 12, 13, 14, 15],
[16, 17, 18, 19, 20, 21, 22, 23]])
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]])
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23]])
array([[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[10, 11],
[12, 13],
[14, 15],
[16, 17],
[18, 19],
[20, 21],
[22, 23]])
array([[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[10, 11],
[12, 13],
[14, 15],
[16, 17],
[18, 19],
[20, 21],
[22, 23]])
2차원 배열의 선언
랜덤으로 배열 생성
array([-1.41254126, -1.78825833, 1.57552918, -1.25488578, -0.94708306,
-0.11765203, -0.84827525, 0.10447358, 0.41467199, 0.38905239])
array([0.67729671, 0.19584606, 0.4564896 , 0.9308976 , 0.49080792,
0.03410752, 0.47480477, 0.44519947, 0.20608611, 0.85576604])
array([[-0.97378852, 0.5250826 ],
[-0.97400213, -0.59600022]])
행렬관련기능
차원
- 넘파이배열의 차원은 .shape 으로 확인가능
- 아래는 모두 미묘하게 다르다.
Quiz
1. shape이 ()인 numpy array를 만들어라. (즉 차원이 0인 np.array를 만들어라)
2 a의 모든 원소에 1을 더하는 코드를 작성하라. (numpy를 이용할것)
3 아래와 같은 수열을 생생성하라.
0,1,2,3,4,5,...,99
위의 수열에서 1,4,7,10,13,… 번째의 원소를 뽑아서 아래와 같은 수열을 만들어라. (첫번째 원소는 0이다)
0,3,6,9,12,...,93,96,99
4. 아래와 같은 배열을 선언하라.
차원의 수를 유지하면서 1열을 추출하는 코드를 작성하라. 즉 결과가 아래와 같이 나오도록 하라.
array([[0],
[4],
[8]])
5. 아래의 코드를 관찰하라.
[[True, False, False, False, False],
[False, True, False, False, False],
[False, False, True, False, False],
[False, False, False, True, False],
[False, False, False, False, True]]
lst를 이용하여 shape이 (5,5)인 단위행렬을 만들어라.
array([[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1]])
6. 적당한 코드를 이용하여 아래와 같은 리스트를 생성하라.
이를 이용하여 아래와 같은 행렬을 선언하라.
7. 적당한 코드를 이용하여 아래와 같은 행렬을 선언하라.
array([[1, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 1, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 1, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 1, 0],
[0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
[0, 0, 0, 0, 0, 0, 0, 0, 1, 1]])