numpy基本用法:
使用numpy创建array:
a = np.array([2, 23, 4])
使用numpy创建矩阵:
array = np.array([[1, 2, 3], [2, 3, 4]])
使用numpy创建三行四列的矩阵:
a = np.zeros((3,4))
使用numpy创建0-12三行四列的矩阵:
a = np.arange(12).reshape((3,4)) print(a)
使用numpy创建一个五段的数列:
a = np.linspace(1, 10, 5) 1是起始值,10是截至值,5是分为多少段数
查看array的字节:
a = np.array([2, 23, 4], dtype=np.int) print(a.dtype)
字节越少所占用的空间越小
numpy基本运算:
加减乘除直接列表对应的值进行计算(针对列表)
注意平方在Python中用**表示,例如 c = b**2(b的平方)
特殊算法例如三角函数直接调用,例如 c = 10*np.sin(a) (a中每个值取sin再乘以10)
矩阵的乘法:
c_dot = np.dot(a,b)
c_dot_2 = a.dot(b)
两种办法皆可
随机创建:
a = np.random.random((2,4))
求最大值:max.(a),若想求每列的最大值则是: max.(a,axis=0) 每行的最大值:max.(a,axis=1)(列=0,行=1)
求和: sum.(a)
求最小值:min.(a)
最小值的索引: np.argmin(A)/np.argmax(A)
求矩阵平均值:np.mean(A)/np.average(A), 求列/行求平均值: np.mean(A,axis=0/1)
求矩阵中位数:np.median(A)
求累加:np.cumsum(A)(每项的值等于前面所有项的和)
求累差:np.diff(A)(n+1减去n项的值,n为新矩阵的位置)
输出非零项:np.nonzero(A)(输出两个列表,第一个列表对应行第二个列表对应列)
排序:np.sort(A) (逐行进行从小到大排序)
矩阵的反向(求逆矩阵):np.transpose(A)/A.T (行变列,列变行)无法把横向数列变为竖向数列
np.clip(A,5,9) (把小于5的数都变为5,大于9的数都变为9,其他数字不变输出)
numpy的索引
输出第二行第一列的数据:print(A[2,1])/print(A[2][1])
输出第二行的所有数据:print(A[2,:])
输出第一列的所有数据:print(A[:,1])
输出第二行从第一位到第三位的值:print(A[2,1:3])
python 中只能迭代行(row),若要迭代列则需要将原来的矩阵翻转,再迭代翻转后的行,也就是原矩阵的列
a.flatten() 将矩阵变化为列表
矩阵的遍历:
for item in A.flat: print(item)
A.flat代表着一个迭代器
矩阵的合并
上下合并: np.vstack(A,B)
左右合并:np.hstack(A,B)
横向数列变为竖向数列::,np.newaxis(竖向的变为横向 np.newaxis,:)
进行多个矩阵横向(axis=1)或者纵向(axis=0)的合并: C=np.concatenate((A,B,B,A),axis=0/1)
矩阵的分割
纵向分割: np.split(A,3,axis=0)
横向分割:np.split(A,3,axis=1) 分割的矩形必须相等
若要进行不等项的分割:np.array_split(A,3,axis=1)
纵向分割:np.vsplit(A, 3)
横向分割:np.hsplit(A,2)
矩阵的复制
若把a的值复制给b,再把b的值复制给c,(a=b,b=c)那么,abc三个为一个值,若改变a/b/c中的值,那么另外两个值也会变改变
如果想要这些值不关联起来,需要用到 b=a.copy(深复制),那么改变a的值不会影响b的值