生成数组
列表转数组
>>> import numpy as np
>>> np.array((1,2,3,4,5))
array([1, 2, 3, 4, 5])
range对象转数组
>>> np.array(range(5))
array([0, 1, 2, 3, 4])
生成等差数组
>>> np.linspace(0,10,11)
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
对数数组
np.logspace(start=开始值,stop=结束值,num=元素个数,base=指定对数的底, endpoint=是否包含结束值)
>>> np.logspace(0,100,10)
array([1.00000000e+000, 1.29154967e+011, 1.66810054e+022, 2.15443469e+033,
2.78255940e+044, 3.59381366e+055, 4.64158883e+066, 5.99484250e+077,
7.74263683e+088, 1.00000000e+100])
全0二维数组
>>> np.zeros((3,3))
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
全0一维数组
>>> np.zeros((3,1))
array([[0.],
[0.],
[0.]])
>>> np.zeros((1,3))
array([[0., 0., 0.]])
全1二维数组
>>> np.ones((3,3))
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
全1一维数组
>>> np.ones((1,3))
array([[1., 1., 1.]])
单位矩阵
>>> np.identity(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
空数组
>>> np.empty((3,3))
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
数组与数值的算术运算
创建数组对象
>>> x=np.array((1,2,3,4,5))
>>> x
array([1, 2, 3, 4, 5])
数组与数值相乘\除\整除\加\余数
>>> x*2
array([ 2, 4, 6, 8, 10])
>>> x/2
array([0.5, 1. , 1.5, 2. , 2.5])
>>> x//2
array([0, 1, 1, 2, 2], dtype=int32)
>>> x+2
array([3, 4, 5, 6, 7])
>>> x%3
array([1, 2, 0, 1, 2], dtype=int32)
幂运算
>>> x**3
array([ 1, 8, 27, 64, 125], dtype=int32)
数组与数组的算术运算
数组与数组相乘\除\加\减
>>> a=np.array((1,2,3))
>>> b=np.array(([1,2,3],[4,5,6],[7,8,9]))
>>> a*b
array([[ 1, 4, 9],
[ 4, 10, 18],
[ 7, 16, 27]])
>>> a+a
array([2, 4, 6])
>>> a-a
array([0, 0, 0])
>>> a/a
array([1., 1., 1.])
二维数组转置
>>> b
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> b.T
array([[1, 4, 7],
[2, 5, 8],
[3, 6, 9]])
向量内积
>>> c=np.array((5,6,7))
>>> d=np.array((6,6,6))
>>> c.dot(d)
108
>>> np.dot(c,d)
108
>>>
数组元素访问
>>> b
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> b[0]
array([1, 2, 3])
>>> b[0][0]
1
对数组进行函数运算
>>> z=np.arange(0,100,10)
>>> np.sin(z)
array([ 0. , -0.54402111, 0.91294525, -0.98803162, 0.74511316,
-0.26237485, -0.30481062, 0.77389068, -0.99388865, 0.89399666])
>>> b
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> np.cos(b)
array([[ 0.54030231, -0.41614684, -0.9899925 ],
[-0.65364362, 0.28366219, 0.96017029],
[ 0.75390225, -0.14550003, -0.91113026]])
>>> np.round(_)
array([[ 1., -0., -1.],
[-1., 0., 1.],
[ 1., -0., -1.]])
>>> g=np.random.rand(10)
>>> g=g*10
>>> g
array([4.01995447, 6.89717975, 0.2562274 , 0.63820007, 1.81621247,
7.29489334, 2.74258038, 8.70966967, 9.32080087, 2.34143927])
>>> np.floor(g)
array([4., 6., 0., 0., 1., 7., 2., 8., 9., 2.])
>>> np.ceil(g)
array([ 5., 7., 1., 1., 2., 8., 3., 9., 10., 3.])
对矩阵进行运算
>>> import numpy as np
>>> x=np.arange(0,10).reshape(2,5)
>>> x
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
- 通过reshape()函数实现数组变形 ,2行5列
>>> import numpy as np
>>> x=np.arange(0,10).reshape(2,5)
>>> x
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
>>> np.sum(x)
45
>>> np.sum(x,axis=0)
array([ 5, 7, 9, 11, 13])
>>> np.sum(x,axis=1)
array([10, 35])
>>> np.mean(x,axis=0)
array([2.5, 3.5, 4.5, 5.5, 6.5])
>>> weight=[0.3,0.7]
>>> np.average(x,axis=0,weights=weight)
array([3.5, 4.5, 5.5, 6.5, 7.5])
>>> np.max(x)
9
>>> np.max(x,axis=0)
array([5, 6, 7, 8, 9])
>>>
>>> y=np.random.randint(0,10,size=(3,3))
>>> y
array([[0, 1, 8],
[3, 2, 8],
[4, 3, 9]])
>>> np.std(y)
3.119037521692933
>>> np.std(y,axis=1)
array([3.55902608, 2.62466929, 2.62466929])
>>> np.sort(y,axis=0)
array([[0, 1, 8],
[3, 2, 8],
[4, 3, 9]])
>>> np.sort(y,axis=1)
array([[0, 1, 8],
[2, 3, 8],
[3, 4, 9]])
>>>np.var(y,axis=0)
array([2.88888889, 0.66666667, 0.22222222])
改变数组大小
>>> a=np.arange(1,11,1)
>>> a
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>> a.shape=2,5
>>> a
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10]])
>>> a.shape=5,-1
>>> a
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10]])
>>> b=a.reshape(2,5)
>>> b
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10]])
切片操作
c=np.arange(10)
>>> c
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> c[::-1]
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
>>> c[::2]
array([0, 2, 4, 6, 8])
>>> c[:5]
array([0, 1, 2, 3, 4])
>>> b=np.arange(25)
>>> b.shape=5,5
>>> b
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]])
>>> b[0,2:5]
array([2, 3, 4])
>>> b[1]
array([5, 6, 7, 8, 9])
>>> b[2:5,2:5]
array([[12, 13, 14],
[17, 18, 19],
[22, 23, 24]])
>>>
布尔运算
>>> import numpy as np
>>> x=np.random.rand(10)
>>> x
array([0.30704693, 0.31142912, 0.87764599, 0.43378632, 0.60016321,
0.55398328, 0.52452998, 0.02471551, 0.56248843, 0.30698853])
>>> x>0.5
array([False, False, True, False, True, True, True, False, True,
False])
>>> x[x>0.5]
array([0.87764599, 0.60016321, 0.55398328, 0.52452998, 0.56248843])
>>>
广播
>>> a=np.arange(0,60,10).reshape(-1,1)
>>> b=np.arange(0,6)
>>> a
array([[ 0],
[10],
[20],
[30],
[40],
[50]])
>>> b
array([0, 1, 2, 3, 4, 5])
>>> a+b
array([[ 0, 1, 2, 3, 4, 5],
[10, 11, 12, 13, 14, 15],
[20, 21, 22, 23, 24, 25],
[30, 31, 32, 33, 34, 35],
[40, 41, 42, 43, 44, 45],
[50, 51, 52, 53, 54, 55]])
>>> a*b
array([[ 0, 0, 0, 0, 0, 0],
[ 0, 10, 20, 30, 40, 50],
[ 0, 20, 40, 60, 80, 100],
[ 0, 30, 60, 90, 120, 150],
[ 0, 40, 80, 120, 160, 200],
[ 0, 50, 100, 150, 200, 250]])
分段函数
[ 0, 50, 100, 150, 200, 250]])
>>> y=np.random.randint(0,10,size=(1,10))
>>> y
array([[9, 3, 4, 3, 8, 6, 7, 5, 0, 2]])
>>> np.where(y<5,0,1)
array([[1, 0, 0, 0, 1, 1, 1, 1, 0, 0]])
>>>np.piecewise(y,[y<4,y>7],[lambda y:y*2,lambda y:y*3])
array([[27, 6, 0, 6, 24, 0, 0, 0, 0, 4]])
计算唯一值以及出现次数
>>> import numpy as np
>>> x=np.random.randint(0,10,7)
>>> x
array([3, 7, 5, 2, 8, 1, 6])
>>> np.bincount(x)
array([0, 1, 1, 1, 0, 1, 1, 1, 1], dtype=int64)
>>> np.sum(_)
7
>>> len(x)
7
矩阵运算
>>> a_list=[3,5,7]
>>> a_mat=np.matrix(a_list)
>>> a_mat
matrix([[3, 5, 7]])
>>> a_mat.T
matrix([[3],
[5],
[7]])
>>> a_mat.shape
(1, 3)
>>> a_mat.size
3
>>> b_mat=np.matrix((1,2,3))
>>> b_mat
matrix([[1, 2, 3]])
>>> a_mat*b_mat.T
matrix([[34]])
>>> a_mat.mean()
5.0
>>> a_mat.sum()
15
>>> a_mat.max()
7
>>> c_mat=np.matrix([[1,5,3],[2,9,6]])
>>> c_mat
matrix([[1, 5, 3],
[2, 9, 6]])
>>> c_mat.argsort(axis=0)
matrix([[0, 0, 0],
[1, 1, 1]], dtype=int64)
>>> c_mat.argsort(axis=1)
matrix([[0, 2, 1],
[0, 2, 1]], dtype=int64)
>>> d_mat=np.matrix([[1,2,3],[4,5,6],[7,8,9]])
>>> d_mat.diagonal()
matrix([[1, 5, 9]])
>>> d_mat.flatten()
matrix([[1, 2, 3, 4, 5, 6, 7, 8, 9]])