numpy(1)

最近这几年,机器学习和深度学习大火。而这其中的数据计算是非常多,而这得益于python的numpy模块。多提一句:numpy是没有GIL(多线程解释器锁)的。所以,numpy中的计算是非常快的。那什么是GIL呢?请看python的多线程。话不多说,让我们开启今天的数学之旅。PS:numpy很多API,我还没有学完。我只是总结了一部分,后面会补充的。

通过array生成矩阵:

可以通过dtype设置矩阵数据的类型。astype可以修改数据类型。

通过asarray生成矩阵

用法和array一样。array和asarray都可将结构数据转换为ndarray类型。但是主要区别就是当数据源是ndarray时,
array仍会copy出一个副本,占用新的内存,但asarray不会。

其他生成矩阵的方式

numpy生成随机数:

seed的使用方法:

使用RandomState获得随机数生成器

>>>rdm=np.random.RandomState(2) # 2是随机数种子
>>>a=np.random.randint(0,20,(3,4))
>>>a
array([[ 8, 11, 1, 5],
[ 3, 8, 0, 18],
[ 5, 15, 8, 14]])

reshape&resize

可以通过reshape修改列表的行数和列数,resize改变数组的尺寸大小。根据reshape传入的参数判断转为哪种数组。

numpy运算

加、减、乘、除类似。如果两个矩阵形状相同,两个矩阵对应的元素做操作。若两个矩阵形状不相同,其中一个矩阵的维度与另一个矩阵的维度相同,可以在该维度上做操作。

通过axis求每行(列)的元素和或最大、最小值。0代表列,1代表行。

还可以获得最大、最小值:

其他一些计算

累加、累差、中位数、平均值

对clip函数的解释:小于5的元素都设为5,大于9的元素都设为9

flatten

对数组展开为一维数组

numpy的合并:

numpy的分割:

转置矩阵:

numpy.linspace

numpy.linspace(start,stop,num,endpoint,retstep,dtype)

该方法的作用是子啊start和stop之间产生num个线性向量。每个向量之间的距离是相同的。创建等差数列

start:起始点

stop:终止点

num : int, optional 默认50,生成start和stop之间50个等差间隔的元素

endpoint : bool, optional。If True, stop is the last sample. Otherwise, it is not included. Default is True。生成等差间隔的元素,但是不包含stop,即间隔为 (stop - start)/num

retstep : bool, optional。If True, return (samples, step), where step is the spacing between samples.返回一个(array,num)元组,array是结果数组,num是间隔大小

dtype : dtype, optional。The type of the output array. If dtype is not given, infer the data type from the other input arguments。输出数组的类型。如果没有给出dtype,则从其他输入参数推断数据类型。

numpy.newaxi:

插入新的维度

>>> import numpy as np

>>>b=np.array([1,2,3,4,5,6])
>>>b[np.newaxis]
>>>array([[1, 2, 3, 4, 5, 6]])

numpy.meshgrid:

生成网格点坐标矩阵

由上图,得知meshgrid的作用是:根据传入的两个一维数组参数生成两个数组元素的列表。如果第一个参数是xarray,维度是xdimesion,第二个参数是yarray,维度是ydimesion。那么生成的第一个二维数组是以xarray为行,共ydimesion行的向量;而第二个二维数组是以yarray的转置为列,共xdimesion列的向量

可能你看到这还不明白,看下图:

A,B,C,D,E,F是6个网格点,坐标如图,如何用矩阵形式(坐标矩阵)来批量描述这些点的坐标呢?答案如下:

这就是坐标矩阵——横坐标矩阵X中的每个元素,与纵坐标矩阵Y中对应位置元素,共同构成一个点的完整坐标。

numpy.logspace

创建等比数列,参数和logspace差不多,第四个参数代表基数。默认为10,如果想要修改其默认基数,输入第四个参数base,改变就可以了。

----本文结束,感谢您的阅读。如有错,请指正。----
大哥大嫂过年好!支持我一下呗
0%