test_array = np.array(["1", "4", 5, 8], float) # 1가지 dtype으로만 생성 가능
test_array
# array([1., 4., 5., 8.])
type(test_array[3])
# numpy.float64
tensor = [[[1,2,5,8],[1,2,5,8],[1,2,5,8]],
[[1,2,5,8],[1,2,5,8],[1,2,5,8]],
[[1,2,5,8],[1,2,5,8],[1,2,5,8]],
[[1,2,5,8],[1,2,5,8],[1,2,5,8]]]
np.array(tensor, int).shape
# (4, 3, 4)
np.array(tensor, int).ndim
# 3
np.array(tensor, int).size
# 48
test_matrix = [[1,2,3,4], [1,2,5,8]]
np.array(test_matrix).shape
# (2, 4)
np.array(test_matrix).reshape(2,2,2)
# array([[[1, 2],
# [3, 4]],
# [[1, 2],
# [5, 8]]])
test_matrix = [[[1,2,3,4], [1,2,5,8]], [[1,2,3,4], [1,2,5,8]]]
np.array(test_matrix).flatten()
# array([1, 2, 3, 4, 1, 2, 5, 8, 1, 2, 3, 4, 1, 2, 5, 8])
np.arange(0, 5, 0.5) # 시작, 끝, step
# array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
np.zeros(shape=(10,), dtype=np.int8) # 10 - zero vector 생성
# array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int8)
np.ones(shape=(10,), dtype=np.int8)
# array([[ 1., 1., 1., 1., 1.],
# [ 1., 1., 1., 1., 1.]])
np.empty(shape=(10,), dtype=np.int8)
# array([ 96, 48, -73, 116, 86, 85, 0, 0, 0, 0], dtype=int8)
test_matrix = np.arange(10).reshape(2, 5)
np.zeros_like(test_matrix)
# array([[0, 0, 0, 0, 0],
# [0, 0, 0, 0, 0]])
np.identity(n=3, dtype=np.int8)
# array([[1, 0, 0],
# [0, 1, 0],
# [0, 0, 1]], dtype=int8)
np.eye(N=3, M=5, k=2, dtype=np.int8)
# array([[ 0., 0., 1., 0., 0.],
# [ 0., 0., 0., 1., 0.],
# [ 0., 0., 0., 0., 1.]])
matrix = np.arange(9).reshape(3,3)
np.diag(matrix)
# array([0, 4, 8])
np.diag(matrix, k=1)
# array([1, 5])
np.random.uniform(0,1,10).reshape(2,5) # 균등분포
# array([[ 0.67406593, 0.71072857, 0.06963986, 0.09194939, 0.47293574],
# [ 0.13840676, 0.97410297, 0.60703044, 0.04002073, 0.08057727]])
np.random.normal(0,1,10).reshape(2,5) # 정규분포
# array([[ 1.02694847, 0.39354215, 0.63411928, -1.03639086, -1.76669162],
# [ 0.50628853, -1.42496802, 1.23288754, 1.26424168, 0.53718751]])
a = np.array([[1, 2], [3, 4]])
b = np.array([5, 6])
b = b[np.newaxis, :]
np.concatenate( (a,b.T) ,axis=1)
# array([[1, 2, 5],
# [3, 4, 6]])
test_matrix = np.array([[1,2,3],[4,5,6]], float)
scalar = 3
test_matrix + scalar
# array([[ 4., 5., 6.],
# [ 7., 8., 9.]])
test_matrix = np.arange(1,13).reshape(4,3)
test_vector = np.arange(10,40,10)
test_matrix+ test_vector
# array([[11, 22, 33],
# [14, 25, 36],
# [17, 28, 39],
# [20, 31, 42]])
a = np.arange(10)
a
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a>5
# array([False, False, False, False, False, False, True, True, True, True])
np.any(a>5), np.any(a<0) # 하나라도 만족하면
# (True, False)
np.all(a>5) , np.all(a < 10) # 모두 만족할 경우
# (False, True)
test_a = np.array([1, 3, 0], float)
test_b = np.array([5, 2, 1], float)
test_a > test_b
# array([False, True, False])
test_a == test_b
# array([False, False, False])
a = np.array([1, 3, 0], float)
np.logical_and(a > 0, a < 3) # and 조건의 condition
# array([ True, False, False])
b = np.array([True, False, True], bool)
np.logical_not(b) # NOT 조건의 condition
# array([False, True, False])
a = np.array([1, 3, 0], float)
np.where(a > 0, 3, 2) # true, true, false
# array([3, 3, 2])
a = np.arange(5, 15)
np.where(a>10)
# (array([6, 7, 8, 9]),)
a = np.array([1,2,4,5,8,78,23,3])
np.argmax(a) , np.argmin(a)
# (5, 0)
a=np.array([[1,2,4,7],[9,88,6,45],[9,76,3,4]])
np.argmax(a, axis=1) , np.argmin(a, axis=0) # 축을 기준으로 최대, 최소의 index
# (array([3, 1, 1]), array([0, 0, 2, 2]))
test_array = np.array([1, 4, 0, 2, 3, 8, 9, 7], float)
condition = test_array < 3
test_array[condition]
# array([1., 0., 2.])
a = np.array([2, 4, 6, 8], float)
b = np.array([0,0,1,3,2,1], int) # 반드시 integer로 선언
a[b] # bracket index, b 배열의 값을 index로 하여 a의 값을 추출
# array([2., 2., 4., 8., 6., 4.])
a.take(b) #take 함수: bracket index와 같은 효과
# array([2., 2., 4., 8., 6., 4.])
a = np.array([[1, 4], [9, 16]], float)
b = np.array([0, 0, 1, 1, 0], int)
c = np.array([0, 1, 1, 1, 1], int)
a[b,c] # b를 row index, c를 column index로 변환하여 표시함
# array([ 1., 4., 16., 16., 4.])