list
사용할때처럼 zip
과 for
을 사용하지 않아도 같은 차원의 배열이라면 +
연산자 하나로 덧셈이 가능하다. 단, 같은 차원인지 확인할 것.
#리스트의 각 원소끼리 더하기
lst1 = [1,2,3,4,5]
lst2 = [6,7,8,9,10]
result = [a + b for a,b in zip(lst1,lst2)
#위의 처럼 for과 zip을 사용하지 않아도 됨.
arr_A = np.array([1,2,3,4,5])
arr_B = np.array([6,7,8,9,10])
result = arr_A + arr_B
np.random.randint
: 균일 분포의 정수 난수 1개 생성
np.random.randn
: 가우시안 표준 정규 분포에서 난수 matrix array 생성
np.random.rand
: 0부터 1사이의 균일 분포에서 난수 matrix array 생성
'*' 연산자를 사용하여 행렬 간 같은 위치(인덱스)의 요소별로 곱셈 연산과 행렬 곱 연산은 다르게 연산한다.
고차원 배열에서 np.dot()
과 np.matmul()
메소드의 차이점이 나타남
@
: 행렬곱 (or np.matmul()
)dot
: 내적*
: 스칼라 곱문제 풀때 np.dot
과 A@B
가 헷갈렸었는데, 개념을 정확하지않아서 그랬던듯하다.
(문제를 잘못읽었던것같기도하고 .__. )
배열의 차원 크기를 변경하는 방법.
배열 요소 개수는 동일하며 차원만 조정한다.
def solution(img):
answer = np.array([])
for i in img:
for j in i:
lst = []
cal = round((j[0]*0.3) + (j[1]*0.5) + (j[2]*0.2),1)
lst.append(cal)
answer = np.append(answer, np.array(lst))
answer = answer.reshape(img.shape[0],img.shape[1])
return answer
마지막에 배열의 크기를 변경하는 부분에서 많이 헤맸다.
reshape없이는 그냥 1차원 배열로 return값이 나왔는데 답은 2차원배열로 나와야해서 머리부여잡;;
reshape으로 img에서 shape를 이용해 몇 차원인지 찾아서 변경해줬다.
다른 분의 코드에서 reshape 힌트 얻었었는데 통과하고 다시
그분의 전체적인 코드 다시확인해보니 내코드보다 깔끔해서 '나는 언제쯤' 이러면서 눈물..😂
참고.
https://seong6496.tistory.com/110
https://firework-ham.tistory.com/32