NumPy基础入门(4)数学基础函数

学习汇总:点这里

1.简单数组操作

>>> import numpy as np
>>> a = np.array([[1.0, 2.0], [3.0, 4.0]])
>>> print(a)
[[ 1.  2.]
 [ 3.  4.]]

>>> a.transpose()  # 输出转置矩阵
array([[ 1.,  3.],
       [ 2.,  4.]])

>>> np.linalg.inv(a)  # 输出逆矩阵
array([[-2. ,  1. ],
       [ 1.5, -0.5]])

>>> u = np.eye(2) # 构造单位矩阵
>>> u
array([[ 1.,  0.],
       [ 0.,  1.]])
>>> j = np.array([[0.0, -1.0], [1.0, 0.0]])

>>> j @ j        # 矩阵积
array([[-1.,  0.],
       [ 0., -1.]])

>>> np.trace(u)  # 对角线上的元素和
2.0

>>> y = np.array([[5.], [7.]])
>>> np.linalg.solve(a, y)  # 矩阵积
array([[-3.],
       [ 4.]])

>>> np.linalg.eig(j)  # 计算矩阵特征向量
(array([ 0.+1.j,  0.-1.j]), array([[ 0.70710678+0.j        ,  0.70710678-0.j        ],
       [ 0.00000000-0.70710678j,  0.00000000+0.70710678j]]))

要更改数组的尺寸,您可以忽略其中一个尺寸,然后将自动推断尺寸

>>> a = np.arange(30)
>>> a.shape = 2,-1,3  # -1 means "whatever is needed"
>>> a.shape
(2, 5, 3)
>>> a
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8],
        [ 9, 10, 11],
        [12, 13, 14]],
       [[15, 16, 17],
        [18, 19, 20],
        [21, 22, 23],
        [24, 25, 26],
        [27, 28, 29]]])

我们如何从大小相等的行向量列表中构建2D数组?在MATLAB中,这非常容易:如果x和y是两个相同长度的向量,则只需要do m=[x;y]。在此NumPy的通过功能的工作原理column_stack,dstack,hstack和vstack,视维在堆叠是必须要做的。

>>> x = np.arange(0,10,2)
>>> y = np.arange(5)
>>> m = np.vstack([x,y])
>>> m
array([[0, 2, 4, 6, 8],
       [0, 1, 2, 3, 4]])
>>> xy = np.hstack([x,y])
>>> xy
array([0, 2, 4, 6, 8, 0, 1, 2, 3, 4])

2.三角函数

sin(x,/ [,out,where,cast,order,…])三角正弦,元素方式。

cos(x,/ [,out,where,cast,order,…])余弦元素。

tan(x,/ [,out,where,cast,order,…])按元素计算切线。

arcsin(x,/ [,out,where,cast,order,…])按元素反正弦。

arccos(x,/ [,out,where,cast,order,…])三角反余弦,元素方式。

arctan(x,/ [,out,where,cast,order,…])三角逆切线,元素方向。

hypot(x1,x2,/ [,out,where,cast,…])给定直角三角形的两边,返回其斜边。

arctan2(x1,x2,/ [,out,where,cast,…])x1/x2正确选择象限的逐元素反正切。

degrees(x,/ [,out,where,cast,order,…])将角度从弧度转换为度。

radians(x,/ [,out,where,cast,order,…])将角度从度转换为弧度。

unwrap(p [,不连续,轴])通过将值之间的增量更改为2 * pi补码来展开。

deg2rad(x,/ [,out,where,cast,order,…])将角度从度转换为弧度。

rad2deg(x,/ [,out,where,cast,order,…])将角度从弧度转换为度。

3.舍入函数

numpy.around()这个函数返回四舍五入到所需精度的值。 该函数接受以下参数。

numpy.around(a,decimals)

序号 参数及描述
1 a 输入数组
2 decimals 要舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
>>>import numpy as np
>>>a = np.array([1.0,5.55,  123,  0.567,  25.532])  
>>>a
array([   1.   ,    5.55 ,  123.   ,    0.567,   25.532])

>>>np.around(a)  
array([   1.,    6.,  123.,    1.,   26.])

>>> np.around(a, decimals =  1)  
array([   1. ,    5.6,  123. ,    0.6,   25.5])

>>>np.around(a, decimals =  -1)
array([   0.,   10.,  120.,    0.,   30.])

numpy.floor()此函数返回不大于输入参数的最大整数。
即标量x 的下限是最大的整数i ,使得i <= x。 注意在Python中,向下取整总是从 0 舍入。

>>>import numpy as np
>>>a = np.array([-1.7,  1.5,  -0.2,  0.6,  10])  
>>>a
array([ -1.7,   1.5,  -0.2,   0.6,  10. ])

>>>np.floor(a)
array([ -2.,   1.,  -1.,   0.,  10.])

numpy.ceil()函数返回输入值的上限,即,标量x的上限是最小的整数i ,使得i> = x。

>>>np.ceil(a)
array([ -1.,   2.,  -0.,   1.,  10.])

4.算数运算

用于执行算术运算(如add(),subtract(),multiply()和divide())的输入数组必须具有相同的形状或符合数组广播规则。

>>>import numpy as np 
>>>a = np.arange(9, dtype = np.float_).reshape(3,3)  
>>>a 
array([[ 0.,  1.,  2.],
       [ 3.,  4.,  5.],
       [ 6.,  7.,  8.]])

>>>b = np.array([10,10,10])  
>>>b 
array([10, 10, 10])

>>>np.add(a,b)  
array([[ 10.,  11.,  12.],
       [ 13.,  14.,  15.],
       [ 16.,  17.,  18.]])

>>>np.subtract(a,b)  
array([[-10.,  -9.,  -8.],
       [ -7.,  -6.,  -5.],
       [ -4.,  -3.,  -2.]])
 
>>>np.multiply(a,b)  
array([[  0.,  10.,  20.],
       [ 30.,  40.,  50.],
       [ 60.,  70.,  80.]])

>>>np.divide(a,b)
array([[ 0. ,  0.1,  0.2],
       [ 0.3,  0.4,  0.5],
       [ 0.6,  0.7,  0.8]])

注意:除法需要特别注意。

numpy.reciprocal()此函数返回参数逐元素的倒数,。 由于 Python 处理整数除法的方式,对于绝对值大于 1 的整数元素,结果始终为 0, 对于整数 0,则发出溢出警告。

>>>import numpy as np 
>>>a = np.array([0.25,  1.33,  1,  0,  100])  
>>>a 
array([   0.25,    1.33,    1.  ,    0.  ,  100.  ])

>>>np.reciprocal(a)  
D:/PyCharm Community Edition 2019.2.5/hello.py:4: RuntimeWarning: divide by zero encountered in reciprocal
array([ 4. ,  0.7518797,  1.  ,inf,  0.01])

>>>b = np.array([100], dtype =  int)  
>>>b 
array([100])

>>>np.reciprocal(b)
array([0])

numpy.power()此函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。

>>>import numpy as np 
>>>a = np.array([10,100,1000])  
>>>a 
array([10,100,1000])

>>>np.power(a,2)  
array([100, 10000, 1000000])

>>>b = np.array([1,2,3])  
>>>b 
array([1, 2, 3])

>>>np.power(a,b)
array([10, 10000, 1000000000])

numpy.mod()此函数返回输入数组中相应元素的除法余数。 函数numpy.remainder()也产生相同的结果。

>>>import numpy as np 
>>>a = np.array([10,20,30]) 
>>>b = np.array([3,5,7])  
>>>a 
array([10, 20, 30])

>>>b 
array([3, 5, 7])

>>>np.mod(a,b)  
array([1, 0, 2])

>>>np.remainder(a,b)
array([1, 0, 2])

以下函数用于对含有复数的数组执行操作。

  1. numpy.real() 返回复数类型参数的实部。
  2. numpy.imag() 返回复数类型参数的虚部。
  3. numpy.conj() 返回通过改变虚部的符号而获得的共轭复数。
  4. numpy.angle() 返回复数参数的角度。 函数的参数是degree。 如果为true,返回的角度以角度制来表示,否则为以弧度制来表示。
>>>import numpy as np 
>>>a = np.array([-5.6j,  0.2j,  11.  ,  1+1j])  
>>>a 
array([  0.-5.6j,   0.+0.2j,  11.+0.j ,   1.+1.j ])

>>>np.real(a)  
array([  0.,   0.,  11.,   1.])

>>>np.imag(a)  
array([-5.6,  0.2,  0. ,  1. ])

>>>np.conj(a)  
array([  0.+5.6j,   0.-0.2j,  11.-0.j ,   1.-1.j ])

>>>np.angle(a)  
array([-1.57079633,  1.57079633,  0.        ,  0.78539816])

>>> np.angle(a, deg =  True)
array([-90.,  90.,   0.,  45.])

函数补充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章