Numpy运算

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]])

猜你喜欢

转载自blog.csdn.net/huiyinimen/article/details/83216839