1. 线性代数回顾
  2. numpy exercise 100

线性代数回顾

特征值

特征值的乘积是行列式, 和是迹

逆矩阵的特征值是原特征值的倒数

正定矩阵

相似矩阵

复数矩阵

Numpy

pandas 统计类别数目

 
xxxxxxxxxx
#!/usr/bin/python
# -*- coding: utf-8 -*-
#copyRight by heibanke 
from atplotlib import pyplot as plt
import pandas as pd
import numpy as np
data = pd.read_csv('OutOrder.csv',encoding='gb2312')
a = data[u'方式'].values
#获取类型
type_name=[]
for i in a:
    if i not in type_name:
        type_name.append(i)
print type_name
#对不同类型求和        
type_num = []
for i in type_name:
    type_num.append(sum(a==i))
print type_num
plt.axis('equal')
plt.pie(type_num,labels=type_name,shadow=True,
        labeldistance=1.1,autopct='%3.1f%%',
            startangle=0,pctdistance=0.8)
plt.legend()
plt.show()

Code From HBK

投影

 
xxxxxxxxxx
#!/usr/bin/python
# -*- coding: utf-8 -*-
#copyRight by heibanke
#%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np
A=np.array([[3],[1]])
C=np.array([[1],[3]])
x=np.linspace(-2,2,10)
# print x
# [-2. -1.55555556 -1.11111111 -0.66666667 -0.22222222  0.22222222 0.66666667  1.11111111  1.55555556  2.        ]
"""
x相当于是一维的点。
xx=Ax相当于讲解图中的OA这条直线。为了打直线图引入的变量。
3x是这条直线的横坐标范围,x是这条直线的纵坐标范围
这里也可以不引入这么多点,引入两个点就行,不过这样可以和后续代码保持一致。
"""
# len = 10 print type(x),len(x)
x.shape=(1,10)
# len = 1  print type(x),len(x)
xx=A.dot(x)
# print "A = ",A
# A =  [[3] [1]]
# print "x = ",x
# x =  [[-2.         -1.55555556 -1.11111111 -0.66666667 -0.22222222  0.22222222   0.66666667  1.11111111  1.55555556  2.        ]]
# print "xx= ",xx
# xx=  [[-6.         -4.66666667 -3.33333333 -2.         -0.66666667  0.66666667 2.          3.33333333  4.66666667  6.        ]
# [-2.         -1.55555556 -1.11111111 -0.66666667 -0.22222222  0.22222222 0.66666667  1.11111111  1.55555556  2.        ]]
B=A.T.dot(C)
#求逆
AA=np.linalg.inv(A.T.dot(A)) 
# 投影p: P=Ax^=A*AA*B
P=A*AA*B
E=C-P 
fig = plt.figure() #figsize=(10,6)
ax= fig.add_subplot(111)
ax.plot(xx[0,:],xx[1,:])
ax.plot(A[0],A[1],'ko')
ax.plot([C[0],P[0]],[C[1],P[1]],'r-o')
ax.plot([0,C[0]],[0,C[1]],'m-o')
ax.plot([0,E[0]],[0,E[1]],'k-o')
margin=0.1
ax.text(A[0]+margin, A[1]+margin, r"A",fontsize=20)
ax.text(C[0]+margin, C[1]+margin, r"C",fontsize=20)
ax.text(P[0]+margin, P[1]+margin, r"P",fontsize=20)
ax.text(E[0]+margin, E[1]+margin, r"E",fontsize=20)
ax.axis('equal')
plt.show()