# code for Numpy tutorial

# numpy tutorial

import numpy as np

ma = np.array([1,2,3,4,5,6,7,8,9,10])
print(ma)

# divide into two groups

half = len(ma)//2
mb = ma.reshape(2,half)
print(mb)

# sum
mc = np.sum(mb)
print(mc)
mc = np.sum(mb,axis=1)
print(mc)

mcol = mb[::,::2]
print(mcol)

mc2 = mb[::,1::2]
print(mc2)

mlarge = mb[mb > 5]
print(mlarge)

modd = mb[mb%2 == 1]
print(modd)

mrev = mb[::,::-1]
print(mrev)

mrev2 = mb[::-1,::]
print(mrev2)

mbig = np.array([ma,ma])
print(mbig)

mbt = mbig.T
print(mbt)

# get col from bottom to top, column c

print(mb)
b2t = mb[::-1,::]
bx = b2t[::,2]
print(bx)

# get odd rows

mc = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
oddrow = mc[1::2,::]
print(oddrow)

# get even row last col

evenrow = mc[::2,::]
print(evenrow)
lastcol = evenrow[::,-1]
print(lastcol)

# get diagonal

md = np.array([[1,2,3],[4,5,6],[7,8,9]])
i = np.identity(len(md),int)
dia = md*i
print(dia)

# exercise slide 45, student score, who is lower than average

data = np.array([[610011,80,90,70],
                 [610022,50,80,68],
                 [610033,70,85,80],
                 [610044,60,50,90],
                 [610055,90,74,70]])
print(data)
datascore = data[::,1:]
print(datascore)
w = np.array([[0.3,0.5,0.2]])
score = datascore * w
print(score)
total = score.sum(axis=1)
print(total)
avg = total.mean()
print(avg)
x = total[total < avg]
print(x)
print(data[total < avg])