Post

numpy 2. 연산자와 shape

numpy 2. 연산자와 shape

numpy 2. 연산

예제 4_3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# vector addition, hadammard & dot product
import numpy as np

def testBasicOp():
    a = np.array([1,2,3,4,5])
    b = np.array([-1,-2,-3,-4,-5])

    # addition
    print('a[] + b[] =', a+b)
    # hadamard product
    print('a[] * b[] =', a*b)
    # inner product
    print('a[] dot b[] =', a.dot(b))

    return None

def testOp2():
    a = np.array([1, np.pi, np.pi/2, 1/np.pi, np.pi/4])
    # mean
    avg = a.mean()
    print('avg :', avg)
    # min/max
    mina = a.min()
    print('min :',mina)
    # sin/cos
    arr_sin = np.sin(a)
    print('sin :',arr_sin)

    # floor
    x = np.floor(a[1])
    print(x)
    # ceil
    x = np.ceil(a[1])
    print(x)

    # gcd
    b = np.array([13413,1241])
    #print(np.gcd(b))

    return None

def testOp3():
    a = np.array([1,2,3,4,5])
    b = np.linspace(-2,2, num=5)
    print('Line space b[] :',b, 'of elt type:', b.dtype, sep='')
    #c = a + b
    #d = a * b
    #e = b.dot(a)
    #e2 = np.dot(a,b)
    return None

def main():
    testBasicOp()
    print('-----------------')
    testOp2()
    print('-----------------')
    testOp3()
    return None

if __name__ == '__main__':
    main()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
a[] + b[] = [0 0 0 0 0]
a[] * b[] = [ -1  -4  -9 -16 -25]
a[] dot b[] = -55
-----------------
avg : 1.3632194059931857
min : 0.3183098861837907
sin : [8.41470985e-01 1.22464680e-16 1.00000000e+00 3.12961796e-01
 7.07106781e-01]
3.0
4.0
-----------------
Line space b[] :[-2. -1.  0.  1.  2.]of elt type:float64

C:\Users\noir1\Documents\git\numpy_pandas>C:/Users/noir1/AppData/Local/Programs/Python/Python310/python.exe c:/Users/noir1/Documents/git/numpy_pandas/lab4_3.py
a[] + b[] = [0 0 0 0 0]
a[] * b[] = [ -1  -4  -9 -16 -25]
a[] dot b[] = -55
-----------------
avg : 1.3632194059931857
min : 0.3183098861837907
sin : [8.41470985e-01 1.22464680e-16 1.00000000e+00 3.12961796e-01
 7.07106781e-01]
3.0
4.0
-----------------
Line space b[] :[-2. -1.  0.  1.  2.]of elt type:float64

예제 4_4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 2-dim Numpy array => matrix
import numpy as np

def dim2test():
    # creating a 3x3 matrix
    a = [[1,2,3],[4,5,6],[7,8,9]]
    A = np.array(a, dtype='i4')
    print('Matrix :A\n', A)

    # slicing
    b = A[0:2,1]
    c = A[1,0:2]
    print('Sliced vector b[]:', b)
    print('sliced vec c[] :',c)
    return None

def main():
    dim2test()
    return None

if __name__ == '__main__':
    main()
1
2
3
4
5
6
Matrix :A
 [[1 2 3]
 [4 5 6]
 [7 8 9]]
Sliced vector b[]: [2 5]
sliced vec c[] : [4 5]

예제 4_5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# arrange, reshape, resize, transpose (or T)
import numpy as np
import time

def testNp1():
    a = np.arange(20)
    print('a ranged vector :',a)

    A = a.reshape((2,10))   # reshape - method
    print(A)
    B = np.resize(a,(4,2))  # resize - element 개수가 바뀐다, numpy function
    print(B)
    print(B.transpose())    # transpose - method (data 바뀌지 않음)
    
    # 아래 두개의 차이에 유의
    print(A[:2,1])
    print(A[:2][1])
    return None
def testNp2():
    dt_student = np.dtype([
        ('Name', np.unicode_, 10), # name tag S10
        ('Age', np.int16), # age tag i4
        ('Height', np.float32), # height f
        ('Children/Pets', np.int8, 2)  # child/pets i4
    ]
    )
    student = np.array([
        ('아이유',45,1.70,(0,1)),
        ('Jones',53,1.60,(2,2)),
        ('Kim',20,1.60,(1,1))
    ]
        , dtype= dt_student)
    arr_name_student = student["Name"]
    print(arr_name_student)
    arr_height_student = student["Height"]
    print(arr_height_student.mean())

    return None

def testNp3():
    np.random.seed(int(time.time()))
    A = np.arange(12).reshape((4,3))
    print('print random 4x3 matrix A')
    print(A)
    B = np.random.randint(1,10,12,dtype=np.int32).reshape((2,6))
    # [1,10) random 12개 int
    print(B)

    return None

def main():
    testNp1()
    print('--------------')
    testNp2()
    print('--------------')
    testNp3()
    return None

if __name__ == '__main__':
    main()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
a ranged vector : [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]
[[ 0  1  2  3  4  5  6  7  8  9]
 [10 11 12 13 14 15 16 17 18 19]]
[[0 1]
 [2 3]
 [4 5]
 [6 7]]
[[0 2 4 6]
 [1 3 5 7]]
[ 1 11]
[10 11 12 13 14 15 16 17 18 19]
--------------
['아이유' 'Jones' 'Kim']
1.6333333
--------------
print random 4x3 matrix A
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]
[[2 9 5 7 8 3]
 [3 9 8 9 1 8]]
This post is licensed under CC BY 4.0 by the author.