学习汇总:点这里
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])
以下函数用于对含有复数的数组执行操作。
- numpy.real() 返回复数类型参数的实部。
- numpy.imag() 返回复数类型参数的虚部。
- numpy.conj() 返回通过改变虚部的符号而获得的共轭复数。
- 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.])