#%%1MAtrix
import numpy as np
array1=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(array1)
print("Dimension:",array1.ndim)
print("Shope:",array1.shape)
print("Size:",array1.size)
#%%2 dtype
a=np.array([2,9,3],dtype=np.float32)
print(a.dtype)
b=np.array([2,9,3],dtype=np.int32)
print(b.dtype)
#%%3 attention of empty
a=np.zeros((3,4))
print(a)
b=np.empty((5,4))
print(b)
c=np.ones((3,4))
print(c)
#%%%4arange
a=np.arange(10,20,2)
print(a)
b=np.arange(12)
print(b)
c=np.arange(12).reshape(3,4)
print(c)
d=np.linspace(1,10,6).reshape(2,3)
print(d)
#%%5calculation of vectors
a=np.array([10,20,30,40])
b=np.arange(4)
c=a-b
print(c)
d=a+b
print(d)
e=a*b
print(e)
f=b**2
print(f)
g=10*np.sin(a)
print(g)
#%%6 calculation of Matrix
a=np.array([[1,2],[3,4]])
b=np.arange(4).reshape(2,2)
print(a)
print(b)
c=a*b
print(c)
d=np.dot(a,b)
print(d)
e=np.dot(b)
print(e)
f=np.arange(2)
print(f)
g=np.dot(e,f)
print(g)
h=np.random.random((12,4))
print(h)
print(np.sum(h))
print(np.min(h))
print(np.max(h))
print(np.sum(h,axis=0))
print(np.sum(h,axis=1))
#%%7 madian cumsum diff nonzero sort transpose
A=np.random.random((3,4))
print(A)
print(np.mean(A))
print(np.mean(A,axis=0))
print(np.mean(A,axis=1))
B=np.array([1,20,5,9,41,6,8,100]).reshape(2,4)
print(B)
print(np.median(B))
print(np.cumsum(B))
print(np.nonzero(B))
print(np.sort(B)) #sort by row
print(np.transpose(B))
print(B[1][3])
#%%8 merge
A=np.array([1,1,1])
B=np.array([2,2,2])
C=np.vstack((A,B))#vertical stack
print(C)
D=np.hstack((A,B))#horizontal stack
print(D)
#%%copy and deep copy
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a)
b=a
c=a
d=b
a[0]=35
print(d)
print(d is a)
b[1][1]=99
print(d)
b=a.copy()#deep copy
a[0]=100
print(a)
print(b)
print(a is b)