[0] 다양한 api들

- 여러 api들을 이용해서 for문을 없앨수 있다
# np.sum and ndarray.sum of Vector
import numpy as np
a = np.arange(5)
print("ndarray: ", a)
print("np.sum: ", np.sum(a))
print("ndarray.sum: ", a.sum())
#np.sum and ndarray.sum of Matrix
a = np.arange(6).reshape((2,-1))
print("ndarray: \n", a)
print("np.sum: ", np.sum(a))
print("ndarray.sum: ", a.sum())
[1] axis, keepdims

# axis Argument - axis = 0
a = np.arange(12).reshape((3,-1))
sum_ = a.sum(axis = 0)
print("ndarray: {}\n{}".format(a.shape, a))
print("ndarray.sum(axis = 0): {}\n{}".format(sum_.shape, sum_))
- 더해진 차원은 없어진다


# axis Argument - axis = 1
a = np.arange(12).reshape((3,-1))
sum_ = a.sum(axis = 1)
print("ndarray: {}\n{}".format(a.shape, a))
print("ndarray.sum(axis = 0): {}\n{}".format(sum_.shape, sum_))

- keepdims 를 통해서 (3,) 를 (3,1)로 브로드캐스팅이 가능하게 만들어줄 수 있다.
[2] 전체코드
# np.sum and ndarray.sum of Vector
import numpy as np
a = np.arange(5)
print("ndarray: ", a)
print("np.sum: ", np.sum(a))
print("ndarray.sum: ", a.sum())
#np.sum and ndarray.sum of Matrix
a = np.arange(6).reshape((2,-1))
print("ndarray: \n", a)
print("np.sum: ", np.sum(a))
print("ndarray.sum: ", a.sum())
# axis Argument - axis = 0
a = np.arange(12).reshape((3,-1))
sum_ = a.sum(axis = 0)
print("ndarray: {}\n{}".format(a.shape, a))
print("ndarray.sum(axis = 0): {}\n{}".format(sum_.shape, sum_))
# axis Argument - axis = 1
a = np.arange(12).reshape((3,-1))
sum_ = a.sum(axis = 1)
print("ndarray: {}\n{}".format(a.shape, a))
print("ndarray.sum(axis = 0): {}\n{}".format(sum_.shape, sum_))
#
a = np.arange(12).reshape((3,-1))
sum_class = np.sum(a, axis = 0)
sum_student = np.sum(a, axis = 1)
sum_class = np.sum(a, axis = 0, keepdims = True)
sum_student = np.sum(a, axis = 1, keepdims = True)
#
n_student, n_class = 3, 4
m_score, M_score = 0, 100
scores = np.random.randint(low = m_score, high = M_score, size = (n_student, n_class))
mean_class = np.mean(scores, axis = 0, keepdims = True)
mean_class = np.mean(scores, axis = 1, keepdims = True)