이 수식은 말로 표현하면 “요소별로 q와 c를 곱한 것을 모두 더한다.”입니다. 이보다 더 축약하면 수량과 단가 곱의 총합이라고 할 수 있겠네요. 이 책에서 다루는 수준에서는 이를 점곱의 동의어로 사용하겠습니다.
자, NumPy를 이용한 코드를 좌변에 써 보고, 수식을 우변에 써 보았습니다.
이를 때로는 qc로 줄여서 쓰기도 합니다. 점곱을 사용한다는 것을 강조하고 여러분이 기억할 수 있게 하는 차원에서 q•c처럼 점곱의 기호로 점(•)을 쓰겠습니다. 요소별 계산을 편하게 구현하려면 파이썬의 zip 함수를 사용해 보세요. 여러 개의 시퀀스에 들어 있는 값을 순서대로 함께 처리하는 데 유용합니다.
In [13]:
for q_i, c_i in zip(quantity, costs): print("{:2d} {:5.2f} --> {:5.2f}".format(q_i, c_i, q_i * c_i)) print("Total:", sum(q*c for q,c in zip(quantity,costs)))
2 12.50 --> 25.00 12 0.50 --> 6.00 3 1.75 --> 5.25 Total: 36.25
보통은 NumPy의 np.dot으로 점곱을 쉽게 사용할 수 있습니다.