美文网首页
第二章 Python语法基础,IPython和Jupyter N

第二章 Python语法基础,IPython和Jupyter N

作者: ghostdogss | 来源:发表于2019-03-20 14:06 被阅读0次

    1.魔术命令

    IPython中特殊的命令(Python中没有)被称作“魔术”命令。这些命令可以使普通任务更便捷,更容易控制IPython系统。魔术命令是在指令前添加百分号%前缀。例如,可以用%timeit(这个命令后面会详谈)测量任何Python语句,例如矩阵乘法,的执行时间:

    In [20]: a = np.random.randn(100, 100)
    In [20]: %timeit np.dot(a, a)
    10000 loops, best of 3: 20.9 µs per loop
    
    一些常用的IPython魔术命令

    魔术函数一重要用法---%matplotlib

    %matplotlib魔术函数配置了IPython shell和Jupyter notebook中的matplotlib。这点很重要,其它创建的图不会出现(notebook)或获取session的控制,直到结束(shell)。
    在IPython shell中,运行%matplotlib可以进行设置,可以创建多个绘图窗口,而不会干扰控制台session:

    In [26]: %matplotlib
    Using matplotlib backend: Qt4Agg
    

    在JUpyter中,命令有所不同:

    In [26]: %matplotlib inline
    
    Jupyter行内matplotlib作图

    2.变量和参数传递♥♥♥

    当在Python中创建变量(或名字),你就在等号右边创建了一个对这个变量的引用。考虑一个整数列表:

    In [8]: a = [1, 2, 3][图片上传中...(image-4f00ae-1552376623108)]
    
    

    假设将a赋值给一个新变量b:

    In [9]: b = a
    

    在有些方法中,这个赋值会将数据[1, 2, 3]也复制。在Python中,a和b实际上是同一个对象,即原有列表[1, 2, 3](见图2-7)。你可以在a中添加一个元素,然后检查b:

    In [10]: a.append(4)
    In [11]: b
    Out[11]: [1, 2, 3, 4]
    
    对同一对象的双重引用

    笔记:赋值也被称作绑定,我们是把一个名字绑定给一个对象。变量名有时可能被称为绑定变量。

    当你将对象作为参数传递给函数时,新的局域变量创建了对原始对象的引用,而不是复制。如果在函数里绑定一个新对象到一个变量,这个变动不会反映到上一层。因此可以改变可变参数的内容。假设有以下函数:

    def append_element(some_list, element):
        some_list.append(element)
    

    然后有:

    In [27]: data = [1, 2, 3]
    
    In [28]: append_element(data, 4)
    
    In [29]: data
    Out[29]: [1, 2, 3, 4]
    

    3.日期和时间

    Python内建的datetime模块提供了datetime、date和time类型。datetime类型结合了date和time,是最常使用的:

    In [102]: from datetime import datetime, date, time
    
    In [103]: dt = datetime(2011, 10, 29, 20, 30, 21)
    
    In [104]: dt.day
    Out[104]: 29
    
    In [105]: dt.minute
    Out[105]: 30
    

    根据datetime实例,你可以用date和time提取出各自的对象:

    In [106]: dt.date()
    Out[106]: datetime.date(2011, 10, 29)
    
    In [107]: dt.time()
    Out[107]: datetime.time(20, 30, 21)
    

    strftime方法可以将datetime格式化为字符串:

    In [108]: dt.strftime('%m/%d/%Y %H:%M')
    Out[108]: '10/29/2011 20:30'
    

    strptime可以将字符串转换成datetime对象:

    In [109]: datetime.strptime('20091031', '%Y%m%d')
    Out[109]: datetime.datetime(2009, 10, 31, 0, 0)
    

    表2-5列出了所有的格式化命令。



    当你聚类或对时间序列进行分组,替换datetimes的time字段有时会很有用。例如,用0替换分和秒:

    In [110]: dt.replace(minute=0, second=0)
    Out[110]: datetime.datetime(2011, 10, 29, 20, 0)
    

    因为datetime.datetime是不可变类型,上面的方法会产生新的对象。
    两个datetime对象的差会产生一个datetime.timedelta类型:

    In [111]: dt2 = datetime(2011, 11, 15, 22, 30)
    
    In [112]: delta = dt2 - dt
    
    In [113]: delta
    Out[113]: datetime.timedelta(17, 7179)
    
    In [114]: type(delta)
    Out[114]: datetime.timedelta
    

    结果timedelta(17, 7179)指明了timedelta将17天、7179秒的编码方式。
    将timedelta添加到datetime,会产生一个新的偏移datetime:

    In [115]: dt
    Out[115]: datetime.datetime(2011, 10, 29, 20, 30, 21)
    
    In [116]: dt + delta
    Out[116]: datetime.datetime(2011, 11, 15, 22, 30)
    

    相关文章

      网友评论

          本文标题:第二章 Python语法基础,IPython和Jupyter N

          本文链接:https://www.haomeiwen.com/subject/aofnpqtx.html