Python与机器学习6

1. numpy.mgrid

解析:

>>> np.mgrid[0:5, 0:4]
array([[[0, 0, 0, 0],
        [1, 1, 1, 1],
        [2, 2, 2, 2],
        [3, 3, 3, 3],
        [4, 4, 4, 4]],

       [[0, 1, 2, 3],
        [0, 1, 2, 3],
        [0, 1, 2, 3],
        [0, 1, 2, 3],
        [0, 1, 2, 3]]])

2. np.meshgrid

>>> nx, ny = (3, 2)
>>> x = np.linspace(0, 1, nx)
>>> y = np.linspace(0, 1, ny)
>>> xv, yv = meshgrid(x, y)
>>> xv
array([[ 0. ,  0.5,  1. ],
       [ 0. ,  0.5,  1. ]])
>>> yv
array([[ 0.,  0.,  0.],
       [ 1.,  1.,  1.]])
>>> xv, yv = meshgrid(x, y, sparse=True)  # make sparse output arrays
>>> xv
array([[ 0. ,  0.5,  1. ]])
>>> yv
array([[ 0.],
       [ 1.]])

3. Python中的下划线 

[1]单下划线结尾_:只是为了避免与Python关键字的命名冲突。
[2]_单下划线开头:弱“内部使用”标识,比如"from M import *",将不导入所有以该下划线开头的对象,包括包、模块、成员等。

[3]__双下划线开头:模块内的成员,表示私有成员,外部无法直接调用。
[4]__双下划线开头和双下划线结尾__:指那些包含在用户无法控制的命名空间中的“魔术”对象或属性,比如类成员的__name__ 、__doc__、__init__、__import__、__file__等。

说明:Python中的包对应于文件夹,而模块对应于文件。

4. np.concatenate

解析:numpy.concatenate((a1, a2, ...), axis=0)

>>> a = np.array([[1, 2], [3, 4]])
>>> b = np.array([[5, 6]])
>>> np.concatenate((a, b), axis=0)
array([[1, 2],
       [3, 4],
       [5, 6]])
>>> np.concatenate((a, b.T), axis=1)
array([[1, 2, 5],
       [3, 4, 6]])

5. np.hstack 

解析:numpy.hstack(tup): Stack arrays in sequence horizontally (column wise). Equivalent to np.concatenate(tup, axis=1).

>>> a = np.array((1,2,3))
>>> b = np.array((2,3,4))
>>> np.hstack((a,b))
array([1, 2, 3, 2, 3, 4])
>>> a = np.array([[1],[2],[3]])
>>> b = np.array([[2],[3],[4]])
>>> np.hstack((a,b))
array([[1, 2],
       [2, 3],
       [3, 4]])

6. np.vstack

解析:numpy.vstack(tup): Stack arrays in sequence vertically (row wise). Equivalent to np.concatenate(tup, axis=0) if tup contains arrays that are at least 2-dimensional.

>>> a = np.array([1, 2, 3])
>>> b = np.array([2, 3, 4])
>>> np.vstack((a,b))
array([[1, 2, 3],
       [2, 3, 4]])
>>>
>>> a = np.array([[1], [2], [3]])
>>> b = np.array([[2], [3], [4]])
>>> np.vstack((a,b))
array([[1],
       [2],
       [3],
       [2],
       [3],
       [4]])

7. np.transpose

解析:numpy.transpose(a, axes=None): Permute the dimensions of an array.

>>> x = np.arange(4).reshape((2,2))
>>> x
array([[0, 1],
       [2, 3]])
>>>
>>> np.transpose(x)
array([[0, 2],
       [1, 3]])
>>>
>>> x = np.ones((1, 2, 3))
>>> np.transpose(x, (1, 0, 2)).shape
(2, 1, 3)

8. numpy.flipud

解析:numpy.flipud(m): Flip array in the up/down direction.

>>> A = np.diag([1.0, 2, 3])
>>> A
array([[ 1.,  0.,  0.],
       [ 0.,  2.,  0.],
       [ 0.,  0.,  3.]])
>>> np.flipud(A)
array([[ 0.,  0.,  3.],
       [ 0.,  2.,  0.],
       [ 1.,  0.,  0.]])

9. numpy.fliplr

解析:numpy.fliplr(m): Flip array in the left/right direction.

>>> A = np.diag([1.,2.,3.])
>>> A
array([[ 1.,  0.,  0.],
       [ 0.,  2.,  0.],
       [ 0.,  0.,  3.]])
>>> np.fliplr(A)
array([[ 0.,  0.,  1.],
       [ 0.,  2.,  0.],
       [ 3.,  0.,  0.]])

10. numpy.rot90

解析:numpy.rot90(m, k=1): Rotate an array by 90 degrees in the counter-clockwise direction.

>>> m = np.array([[1,2],[3,4]], int)
>>> m
array([[1, 2],
       [3, 4]])
>>> np.rot90(m)
array([[2, 4],
       [1, 3]])
>>> np.rot90(m, 2)
array([[4, 3],
       [2, 1]])

11. numpy.random.randn

解析:numpy.random.randn(d0, d1, ..., dn): Return a sample (or samples) from the "standard normal" distribution.

>>> np.random.randn()
2.1923875335537315 #random
>>>
>>> 2.5 * np.random.randn(2, 4) + 3
array([[-4.49401501,  4.00950034, -1.81814867,  7.29718677],  #random
       [ 0.39924804,  4.68456316,  4.99394529,  4.84057254]]) #random

12. numpy.ravel

解析:numpy.ravel(a, order='C'): Return a contiguous flattened array.

>>> x = np.array([[1, 2, 3], [4, 5, 6]])
>>> print(np.ravel(x))
[1 2 3 4 5 6]

13. Python自省[反射]

解析:自省[反射]就是列出对象的所有属性和方法。

14. 实例方法,类方法,静态方法,类变量和实例变量

解析:

[1]实例方法:类的实例能够使用的方法。

[2]类方法:将类本身作为对象进行操作的方法。类方法使用@class method装饰器定义,其第一个参数是类,约定写为cls。类和实例都可以调用类方法。

[3]静态方法:静态方法位于类定义的命名空间中。使用装饰器@static method定义静态方法。类和实例都可以调用静态方法。

[4]类变量和实例变量:类变量定义在类的定义之后,实例变量则是以self.开头,实例也能够访问类变量。

说明:实例方法的第一个参数默认为self,代指实例。self不是一个关键字,而是约定的写法。__init__()是生成实例时默认调用的实例方法。

15. Python应用场景

解析:学习Python也有一段时间了,越发感觉Python功能的强大。用Python做过的事情,如下所示:

[1]数据分析:NumPy,Pandas,Matplotlib,SciPy,Seaborn,PySpark等。

[2]数据挖掘和机器学习:Scikit-Learn,PyMC3,Mayavi,NetworkX等。

[3]自然语言处理:NLTK,Jieba,Gensim(Word2Vec,Doc2Vec)等。

[4]数字图像处理和计算机视觉:cv2,PIL等。

[5]计算机图像学:PyOpenGL等。

[6]深度学习:Caffe,TensorFlow,Theano等。

[7]C++与Python互操作:boost.python,Python/C API等。

[8]异构计算:PyCUDA,PyOpenCL,cgen [3]等。

[9]并行计算:mpi4py,threading,multiprocessing,cython(支持OpenMP)等。 

[10]图像界面:PyQt,TkInter等。

[11]网络爬虫:Scrapy,Requests,Beautiful Soup,urllib2,creepy,selenium,etl,database[redis,mysql,mongodb]等。

[12]网站开发:django,Django REST framework,Flask,web.py等。

[13]微信开发[公众号,微信小程序]:wechatpy等。

[14]网络安全:ctypes,PyEMU,IDAPython,sqlmap,DNSRecon,patator,XSSer,HULK,SSLyze等。

说明:Python可以做人工智能和高性能计算,也可以做服务器、移动端和桌面应用开发。总之,用Python去做任何你想做的事情吧,只有想不到,没有做不到。

16. 包管理器conda

解析:

[1]conda list:查看Anaconda包含的库。

[2]conda install <pkg name>:该命令用于安装应用包,比如conda install numpy。

[3]conda update <pkg name>:该命令用于升级应用包,比如conda update numpy。

17. 使用交互式标注

解析:

from PIL import Image
from pylab import *

im = array(Image.open('a.jpg'))
imshow(im)
print 'Please click 1 point'
x = ginput(1)
print 'you clicked: ',x
show()

18. YAML文件格式

解析:YAML文件格式是YAML[YAML Aint Markup Language]编写的文件格式,YAML是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互,可以被支持YAML库的不同的编程语言程序导入。比如C/C++,Python,C#等。

19. Python中的enumerate

解析:enumerate()遍历序列中的元素以及它们的下标。 

(1)for i, j in enumerate(('a', 'b', 'c'))
(2)for i, j in enumerate([1, 2, 3])
(3)for i, j in enumerate({'a':1, 'b':2})
(4)for i, j in enumerate('abc')

20. pip install -U / ----upgrade

解析:如果没有安装该软件,那么安装该软件;如果已经安装该软件,那么升级该软件为最新版本。

21. scipy.signal.convolve

解析:scipy.signal.convolve:Convolve two N-dimensional arrays.

>>> from scipy import signal
>>> sig = np.repeat([0., 1., 0.], 100)
>>> win = signal.hann(50)
>>> filtered = signal.convolve(sig, win, mode='same') / sum(win)
>>>
>>> import matplotlib.pyplot as plt
>>> fig, (ax_orig, ax_win, ax_filt) = plt.subplots(3, 1, sharex=True)
>>> ax_orig.plot(sig)
>>> ax_orig.set_title('Original pulse')
>>> ax_orig.margins(0, 0.1)
>>> ax_win.plot(win)
>>> ax_win.set_title('Filter impulse response')
>>> ax_win.margins(0, 0.1)
>>> ax_filt.plot(filtered)
>>> ax_filt.set_title('Filtered signal')
>>> ax_filt.margins(0, 0.1)
>>> fig.tight_layout()
>>> fig.show()

22. numpy.convolve 

解析:numpy.convolve:Returns the discrete, linear convolution of two one-dimensional sequences. 

>>> np.convolve([1, 2, 3], [0, 1, 0.5])

array([ 0. ,  1. ,  2.5,  4. ,  1.5])

说明:full模式:(N+M-1)

>>> np.convolve([1, 2, 3], [0, 1, 0.5])

array([ 0. ,  1. ,  2.5,  4. ,  1.5])

说明:same模式:max(M,N)

>>> np.convolve([1,2,3],[0,1,0.5], 'valid')

array([ 2.5])

说明:valid模式:max(M,N)-min(M,N)+1

23. Python使用pdb库进行调试 

解析:pdb是Python自带的一个包,为Python程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb提供一些常用调试命令,如下所示:

[1]break或b设置断点:设置断点。

[2]continue或c:继续执行程序。

[3]list或l:查看当前行的代码段。

[4]step或s:进入函数。

[5]return或r:执行代码直到从当前函数返回。

[6]exit或q:中止并退出。

[7]next或n:执行下一行。

[8]pp:打印变量的值。

[9]help:帮助。

说明:import pdb; pdb.set_trace()

参考文献:

[1] numpy.meshgrid:numpy.meshgrid — NumPy v1.22 Manual

[2] 渗透测试人员的Python工具箱:http://sanwen8.cn/p/190y8nx.html

[3] Welcome to cgen’s documentation:cgen 2020.2 documentation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NLP工程化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值