Numpy运算
操作系统:windows7+Anaconda3+python3.6
求最大值,最小值 ,平均值,方差
In[2]: import numpy as np
In[2]: score = np.array([[8, 3], [5, 2], [4, 7],[6,5]])
In[2]: score
Out[36]:
array([[8, 3],
[5, 2],
[4, 7],
[6, 5]])
In[2]: np.amax(score,axis=0) #每一列的最大值为 # 求每一列的最大值(0表示列)
Out[34]: array([8, 7])
In[2]: np.amax(score,axis=1) #每一行的最大值为 # 求每一行的最大值(1表示行)
Out[35]: array([8, 5, 7, 6])
In[2]: np.amin(score,axis=0) #每一列的最小值为
Out[38]: array([4, 2])
In[2]: np.amin(score,axis=1) #每一行的最小值为
Out[39]: array([3, 2, 4, 5])
In[2]: np.mean(score,axis=0) #求每一列的平均值(0表示列)
Out[39]: array([5.75, 4.25])
In[2]: np.mean(score,axis=1) #求每一行的平均值(1表示行)
Out[41]: array([5.5, 3.5, 5.5, 5.5])
In[2]: np.std(score,axis=0) #求每一列的方差(0表示列)
Out[42]: array([1.47901995, 1.92028644])
In[2]: np.std(score,axis=1) #求每一行的方差(1表示行)
Out[43]: array([2.5, 1.5, 1.5, 0.5])
1.应用
In[2]: import numpy as np
In[2]: score = np.array([[8, 3], [5, 2], [4, 7],[6,5]])
In[2]: score
Out[36]:
array([[8, 3],
[5, 2],
[4, 7],
[6, 5]])
In[2]: score[:,0] = score[:,0] + 5 #第一列都加5
In[2]: score
Out[45]:
array([[13, 3],
[10, 2],
[ 9, 7],
[11, 5]])
2.应用
In[2]: score = np.array([[8, 3], [5, 2], [4, 7],[6,5]])
In[2]: score
Out[49]:
array([[8, 3],
[5, 2],
[4, 7],
[6, 5]])
In[2]: score[:,0] = score[:,0] * 0.5 #第一列减半
In[2]: score
Out[51]:
array([[4, 3],
[2, 2],
[2, 7],
[3, 5]])
注意:实数在计算机里只能用浮点数无限逼近精度,不能确切表示
数组相加
In[2]: a1 = np.array([1,2])
In[2]: a2 = np.array([3,4])
In[2]: a1+a2
Out[61]: array([4, 6])
数组相减
In[2]: a1 = np.array([1,2])
In[2]: a2 = np.array([3,4])
In[2]: a1-a2
Out[30]: array([-2, -2])
数组相除
In[2]: a1 = np.array([1,2])
In[2]: a2 = np.array([3,4])
In[2]: a1/a2
Out[31]: array([0.33333333, 0.5 ])
数组相乘
In[2]: a1 = np.array([1,2])
In[2]: a2 = np.array([3,4])
In[2]: a1*a2
Out[32]: array([3, 8])
总结:numpy中的数组(矢量) 默认的加减乘除 操作都是对应位置的元素相操作
矢量点乘 是向量的内积 就是对应元素相乘再相加
In[2]: import numpy as np
In[2]: d1 = np.array([2,7])
In[2]: d2 = np.array([8,3])
In[2]: d1.dot(d2)
Out[80]: 37
判断
In[2]: import numpy as np
In[2]: score = np.array([[8, 3], [5, 2], [4, 7],[6,5]])
In[2]: score > 3
Out[23]:
array([[ True, False],
[ True, False],
[ True, True],
[ True, True]])
三目运算
In[2]: import numpy as np
In[2]: score = np.array([[8, 3], [5, 2], [4, 7],[6,5]])
In[2]: np.where(score < 5 , 0 ,9) # 若数值<5 ,替换为0,数值 > 5 替换为9
Out[24]:
array([[9, 0],
[9, 0],
[0, 9],
[9, 9]])
阶乘
import numpy as np
Out[5]: np.math.factorial(10) # 求10的阶乘
Out[6]: 3628800
开方
import numpy as np
Out[6]: np.sqrt(2) # 根号2的开方
Out[7]: 1.4142135623730951
欧几里得距离 (就是求两点之间距离)
import numpy as np
def distance_betwin_p(p1,p2):
np.sqrt((p1[0]-p2[0]*(p1[0]-p2[0]))+(p1[1]-p2[1])**2)
求p1点到p2点之间的距离
范数就是矢量的长度
求矢量的长度 就是计算矢量x的范数
import numpy as np
x = np.array([3,3])
np.linalg.norm(x)
Out[26]: 4.242640687119285
计算矢量的角度就是弧度
import numpy as np
np.arctan(3.0/3.0)
Out[45]: 0.7853981633974483
弧度转换为角度
import numpy as np
np.rad2deg(np.arctan(3.0/3.0))
Out[46]: 45.0
角度转化为弧度
import numpy as np
np.deg2rad(45)
Out[27]: 0.7853981633974483
矩阵运算
(M行, N列) * (N行, Z列) = (M行, Z列)
import numpy as np
score = np.array([[8, 3], [5, 2], [4, 7],[6,5]])
a = np.array([[0.4],[0.6]])
np.dot(score,a)
Out[62]:
array([[5. ],
[3.2],
[5.8],
[5.4]])