Python与数据分析1

人盡茶涼 提交于 2019-12-05 23:28:58

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:https://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html

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

[3] Welcome to cgen’s documentation:https://documen.tician.de/cgen/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!