<안내>
필자도 배우는 입장이라 틀린점, 잘못된 점이 있을 수 있습니다.
그러니 지적, 피드백 환영합니다.
2차원 인덱싱하기¶
In [2]:
import numpy as np
In [6]:
info = np.array([[1,2,3,4,5,6],[7,8,9,10,11,12]])
2차원에서 인덱스를 조건으로 하려면 어떻게 해야할까 라는 문제!¶
In [7]:
a = info[0,:] # 0과 : 를 이용하면 됨 -> 0행의 모든내용에 대해서 해보자는 얘기
a
Out[7]:
array([1, 2, 3, 4, 5, 6])
불인덱싱도 가능함¶
In [8]:
B = info[0,:] > 3
B
Out[8]:
array([False, False, False, True, True, True])
In [11]:
a[B]
Out[11]:
array([4, 5, 6])
인덱스를 여러개 출력하려면? : enumerate()함수¶
In [18]:
index_lst = [i for i, value in enumerate(info[0,:]) if value > 3]
print(index_lst)
[3, 4, 5]
In [21]:
weight_lst = [i for i , value in enumerate(info[1,:]) if (value <8) | (value > 10)]
print(weight_lst)
[0, 4, 5]
In [35]:
answer = index_lst + weight_lst # 리스트를 일단 더하고
print(answer)
answer = set(answer) # 리스트에서 겹치는 부분을 set의 성질 (중복하지않음)을 이용해서 거르고
print(answer)
answer = list(set_answer) # 다시 set을 리스트로 바꿔준다.
print(answer)
[0, 3, 4, 5]
놀이공원 문제 풀이¶
- 핵심: 인덱스를 리스트로 한번에 뽑을 수 있니? -> enumerate() 함수
In [36]:
import numpy as np
info = np.array([[151.4, 172.45, 138.65, 177.63, 207.46],
[44.64, 163.5, 112.35, 73.55, 97.83]])
B = [i for i, value in enumerate(info[0,:]) if (value <150 or value > 195)]
C = [i for i, value in enumerate(info[1,:]) if value > 140]
answer = B + C
answer= set(answer)
answer = list(answer)
print(answer)
[1, 2, 4]
아래아 적기 (·)¶
- alt 누른 상태로 0183 순서대로 누르고 alt떼기
문제 2번 행렬곱 문제¶
In [37]:
import numpy as np
def solution(arr_list):
A = np.array([[0]])
for arr in arr_list:
try:
A =np.dot(A+1,np.array(arr)*2)
except:
continue
answer = np.array(A)
return answer
lst = np.array([[[ -9,-14]],[[ 14,-2,0],[-14,-5,1],[-11,3,-6]],[[-2,-6],[18,0]]])
print(solution(lst))
[[-904 204]]
C:\Users\USER\AppData\Local\Temp/ipykernel_20448/2566515421.py:14: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
lst = np.array([[[ -9,-14]],[[ 14,-2,0],[-14,-5,1],[-11,3,-6]],[[-2,-6],[18,0]]])
막힌 부분 :¶
- 행렬곱에서 A랑 lst에서 뽑아낸 개체의 속성을 생각을 못했음 (뽑아낸 개체의 속성이 list로 나오더라
- list * 2 를 하면, 리스트가 두배가 된 (리스트의 개체가 두개가 됨 [1,2] 라면 [1,2],[1,2]
- try except의 이해부족
In [39]:
import numpy as np # 처음 작성했던 코드
def solution(arr_list):
A = [[0]] # 여기가 np.array([[0]]) 이 되어야하고
for arr in arr_list:
try:
A += 1
B = arr * 2 # np.array(arr)*2가 되어야함
A =np.dot(A,B)
except:
continue
answer = np.array(A)
return answer
lst = np.array([[[ -9,-14]],[[ 14,-2,0],[-14,-5,1],[-11,3,-6]],[[-2,-6],[18,0]]])
print(solution(lst))
[[0]]
C:\Users\USER\AppData\Local\Temp/ipykernel_20448/2767880860.py:16: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
lst = np.array([[[ -9,-14]],[[ 14,-2,0],[-14,-5,1],[-11,3,-6]],[[-2,-6],[18,0]]])
try, except구문의 이해¶
In [42]:
import numpy as np
def solution(arr_list):
A = np.array([[0]])
for arr in arr_list:
try:
A += 1
B = np.array(arr) *2
print('여기까지 실행됨')
A =np.dot(A+1,B)
print('여기까지 실행됨2')
except:
continue
answer = np.array(A)
return answer
lst = np.array([[[ -9,-14]],[[ 14,-2,0],[-14,-5,1],[-11,3,-6]],[[-2,-6],[18,0]]])
print(solution(lst))
여기까지 실행됨
여기까지 실행됨2
여기까지 실행됨
여기까지 실행됨
여기까지 실행됨2
[[-1776 396]]
C:\Users\USER\AppData\Local\Temp/ipykernel_20448/714336882.py:18: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
lst = np.array([[[ -9,-14]],[[ 14,-2,0],[-14,-5,1],[-11,3,-6]],[[-2,-6],[18,0]]])
이 코드를 보면 왜 이렇게 코딩하면 안되는 지 알 수 있을거다.
try, except구문은 try 하고, 안될 시 처음으로 돌리고 except로 가는게 아니라 그 상태에서 except로 가는거니까
'여기까지 실행됨'까지는 실행되고 뒤로 넘기니 A 에다가 1을 더해주고 말고의 차이가 마지막 답에 영향을 미치는거지
'RGB 를 흑백으로' 문제 풀이¶
접근 :¶
바뀌는 것 :
- RGB상 숫자
- width , height
우리가 주목해야 할 것 :
width , height : 얘가 바뀌면 전체 크기가 바뀜
RGB : 바뀌면 각 픽셀의 색이 바뀜
for 반복문을 실행할 건덕지가 보이는 부분이 두개네?
- 전체 픽셀에서 R,G,B에 대해서 for 반복문을 실행할 수 있고,
- 얘는 하나의 새로운 배열을 생성해서 걔에다가 for color in RGB 정도겠지?
그러면 하나의 큰 배열에 R 가중치, G 가중치, B 가중치가 더해지는 그림이 나올거고
- 얘는 하나의 새로운 배열을 생성해서 걔에다가 for color in RGB 정도겠지?
- 각 픽셀에 대해서 for 반복문을 실행할 수 있겠네?
- 얘는 결과물의 픽셀은 input의 RGB가중치를 더한애라는 것을 이용할텐데
for pixel in img를 하고 그 안에서 계산을 해서 만들어진 픽셀끼리 합쳐지는 그림이 나오겠네
- 얘는 결과물의 픽셀은 input의 RGB가중치를 더한애라는 것을 이용할텐데
내일 계속
'TIL > [겨울방학 부트캠프]TIL' 카테고리의 다른 글
TIL 18일차 (22.01.24) (0) | 2022.01.25 |
---|---|
TIL 17일차 (22.01.23) (0) | 2022.01.24 |
TIL 15일차 (22.01.20) (0) | 2022.01.21 |
TIL 14일차 (22.01.19) (0) | 2022.01.20 |
TIL 13일 (22.01.18) (0) | 2022.01.18 |