1、数据构造
|
直接构造 |
np.array(列表) |
|
创建等差数组 |
np.arange(开始值,结束值,间距,dtype=数据类型) |
|
指定区间 |
np.linspace(起始值,终点值,数量) |
|
产生随机数 |
np.random.random(维度) |
|
全零矩阵 |
np.zeros(维度) |
|
注:matrix(矩阵)和ndarray(数组)的区别: matrix对象的shape只能是二维的,而ndarray对象的shape可以是多维度的。 从array()函数到mat()函数用np.asmatrix()或np.mat() 从mat()函数到array()函数用np.asarray() |
|
2、常用运算
|
array |
点成*(各个矩阵对应元素做乘法) A*B 矩阵乘 np.dot(A,B) |
|
matrix |
*:矩阵乘法 multiply():逐元素乘法 |
|
注:array类型和matrix类型对相同的运算使用的函数不同 |
|
|
最值的计算 |
a.min(axis=0/1) axis=1按行,axis=0按列,axis无求整个矩阵的最值 |
|
求和的计算 |
a.sum() |
|
修改形状 |
a=np.arange(0,60,5) a.reshape(4,-1) |
|
转置 |
a.T |
|
展开 |
a.flatten(order=””) #order=’C'按行,'F'按列,'A'原顺序 |
|
增加维度 |
np.newaxis:A[np.newaxis, np.newaxis, :].shape |
|
去除长度为1的维度 |
A.squeeze() |
|
矩阵广播 |
数组形状不同时 |
|
等值判断 |
A==1 判断A中各元素与1是否相等 |
|
对矩阵所有元素做与操作,所有为True则返回True |
np.all(A) |
3、扩展
|
累加前几项的和 |
np.add.accumulate(a) #a的数据类型可为数值也可为字符串 |
|
与前面做逻辑运算 |
a = np.array([1,1,0,1]) np.logical_and.accumulate(a) |
|
条件筛选 |
np.choose的用法A=np.array([[1,0,1],[2,1,0],[1,2,2]]) #把数组中0,1,2替换为10,11,12:np.choose(A, [10, 11, 12]) #替换为true,False:choices = [True, False] np.choose(a, choices) #下面的例子将数组中所有小于 2的值变成10:np.choose(A < 2, (A, 10)) #控制在一个范围内: |
|
连接矩阵 |
np.vstack((A,B)) np.hstack((A,B)) np.dstack((A,B)) |
|
拆分矩阵 |
np.hsplit(a,3) #按水平轴分成三份 np.vsplit(a,2) #按垂直轴分成两份 |
|
控制在上下限范围内 |
小于3的变3,大于4的变5:a.clip(3,4) |
|
近似值 |
近似到小数点后一位:a.round(decimals=1) |
|
索引的使用 |
非零元素的索引:np.where(A) 满足条件的索引:np.where(A>4) |
|
获取满足条件的值 |
大于3的值:A[A>3] 索引为s(列表)的值:A[s] 根据布尔列表求值:Bool=np.array([1,0,0,0,1,1,0],dtype=bool) A[Bool]
|
|
已排好序的列表新加一些数后排序 |
#searchsorted 接受两个参数,其中,第一个必需是已排序的数组。 #返回值对应插入的位置 sorted_array = linspace(0,1,5) values = array([.1,.8,.3,.12,.5,.25]) searchsorted(sorted_array, values) |
4、文件交互txt文件:
读取:data = np.loadtxt('myfile.txt')
写入:np.savetxt(“test.txt”)