코딩의 기록

따라하며 배우는 파이썬과 데이터과학 10장 심화문제

모루우 2025. 2. 18. 12:56
728x90
반응형

1.

import numpy as np

num_arr = np.arange(1, 21)
print(num_arr)

print(num_arr[::-1])

print("num_arr 내의 모든 원소의 합 :",np.sum(num_arr))

print(num_arr.reshape(5, 4))

 

2.

import numpy as np

n_arr = np.arange(25)
n_arr = n_arr.reshape(5, 5)


print(n_arr)


print("첫 원소 :", n_arr[0, 0])
print("마지막 원소: ", n_arr[-1, -1])


print(n_arr[:2])


print(n_arr[2:5])

print(n_arr[:,::2])

print(n_arr[::2, ::2])

print(n_arr[0:2].reshape(5, 2))

전체 줄 주석은 """ """

 

3.

import numpy as np

#np.random.seed(100)
a = np.random.rand(3, 3, 3)

print(a)

print("a의 원소들 중 최댓값 :", a.max())

print("a의 원소들 중 최댓값의 위치 :", a.argmax())

max() 배열의 원소중 최댓값, argmax() 최댓값의 위치 이런 최댓값 같은 거는 기준이 최소단위인 원소(벡터?)인듯? 따로 인자를 주지 않는한

 

4.

import numpy as np

chess = np.zeros((5, 5), dtype = int)

chess[::2, ::2] = 1
chess[1::2, 1::2] = 1

print(chess)

일단은 넘파이 인덱싱으로 for문 없이 숫자를 집어 넣을 수 있다는 것이 좋은듯 그리고 뭐 인덱싱을 이용해란 소리가 내 생각에는 인덱스 안에 뭘 써서 하라는 거 같다 

import numpy as np

chess = np.zeros((5, 5), dtype = int)

chess[::2, ::2] = 1
chess[1::2, 1::2] = 1

print(chess)

print("행렬의 행 방향 성분의 합 :", chess.sum(axis=1))

sum() or np.sum(chess) 에서 axis = 1은 1번축을 따라 연산한다 => 1번축은 안쪽의 열,(왜냐하면 안쪽일수록 차원(축)이 증가하기 때문) 열을따라 계산한다 => 열을 따라 연산한다는 것은 행이 없어진다(행만 더한다)와 같음

즉 행 방향을 더할려면 열을 따라 연산해야 함(0열 1열 2열 3열을 더해야 1행을 더하는 것임)

axis의 개념은 어느방향으로 연산을 진행하는가가 기준임

 

5.

import numpy as np

a = np.arange(0, 32).reshape(4, 4, 2)
a = a.flatten()

print("10번째 원소: ", a[9])
print("20번째 원소: ", a[19])

이렇게 구하면 데이터가 많을 때 구하기는 쉬울 듯 막 내가 곱하면서 계산하는거보단 일일히 값을 행 열 높이 이런거 넣어주는 거 보단

 

6.

import numpy as np

x1 = [i for i in range(100)]
x2 = [i + np.random.randint(1, 10) for i in range(100)]
x3 = [i + np.random.randint(1, 50) for i in range(100)]
x4 = [ np.random.randint(1, 100) for i in range(100)]

print(np.corrcoef([x1, x2, x3 ,x4]))

 

요약

1. axis = 1의 개념은 1의 축을 따라 계산한다

2. 안쪽으로 들어갈 수록 차원, 축이 높아짐

3. """ """ 여러줄 주석

4. max()는 원소중 가장 큰 값, argmax()는 가장 큰 값의 인덱스

728x90
반응형