Python Fundamentals

Functions

add_numbers updated to take an optional 3rd parameter. Using print allows printing of multiple expressions within a single cell.

def add_numbers(x,y,z=None):
        if (z==None):
        return x+y
    else:
        return x+y+z

print(add_numbers(1, 2))
print(add_numbers(1, 2, 3))

output:

3
6

add_numbers updated to take an optional flag parameter.

def add_numbers(x, y, z=None, flag=False):
    if (flag):
        print('Flag is true!')
    if (z==None):
        return x + y
    else:
        return x + y + z
    
print(add_numbers(1, 2, flag=True))

output:

Flag is true!
3

Reading and Writing CSV files

To show CVS files in console, use command !cat xxx.csv.
use “with” to open files

import csv

%precision 2

with open('mpg.csv') as csvfile:
    mpg = list(csv.DictReader(csvfile))
    
mpg[:3] # The first three dictionaries in our list.

用了 with,就不需要 file.close(),会自动关闭以及处理异常,相当于 finally 的功能。

The Python Programming Language: Dates and Times

import datetime as dt
import time as tm
 
tm.time()
 
dtnow = dt.datetime.fromtimestamp(tm.time())
dtnow 
 
dtnow.year, dtnow.month, dtnow.day, dtnow.hour, dtnow.minute, dtnow.second # get year, month, day, etc.from a datetime
 
delta = dt.timedelta(days = 100) # create a timedelta of 100 days
delta
 
today = dt.date.today()
today - delta # the date 100 days ago
today > today-delta # compare dates

Map()

Here's an example of mapping the min function between two lists.

store1 = [10.00, 11.00, 12.34, 2.34]
store2 = [9.00, 11.10, 12.34, 2.01]
cheapest = map(min, store1, store2)
cheapest

the cheapest 不会输出具体的值,只会输出一个地址,除非你进去:

for item in cheapest:
    print(item)

output:

9.0
11.0
12.34
2.01

Lambda and List Comprehensions

Here's an example of lambda that takes in three parameters and adds the first two.

my_function = lambda a, b, c : a + b
my_function(a, b, c)

And list comprehension.

如果没有 else, 就是 a for i in items if C;如果加上 else,就需要调换顺序: a if C else b for i in items

The Python Programming Language: Numerical Python

  1. 检查矩阵是几乘以几,使用 m.shape
  2. 可以用 arrange 函数直接生成 array,比如 n = np.arange(0, 30, 2) # start at 0 count up by 2, stop before 30
  3. 接着 reshape 可以把 array 里的一行的数重新分布,例如 n = n.reshape(3, 5) # reshape array to be 3x5reshape 函数改变调用数组的形状并返回该数组,而 resize 函数改变调用数组自身。反操作 ravel 直接把 array 摊平。
  4. 2中,如果不知道步长,只知道元素的个数,可以用 linspace 函数,例如 o = np.linspace(0, 4, 9) # return 9 evenly spaced values from 0 to 4
  5. 在创建 array 时可以直接用 dtype 指定数据的类型,例如复数 c = np.array( [ [1, 2], [3, 4] ] ), complex),就会输出array( [ [1.+0.j, 2.+0.j], [3.+0.j, 4.+0.j ] ] )
  6. 用函数 zeros 可创建一个全是 0 的 array,用函数 ones 可创建一个全为1的 array,函数 empty 创建一个内容随机并且依赖与内存状态的 array,函数 eye 可创建一个单位矩阵,函数 diag(A) 可利用已有的 array 创建对角矩阵。默认创建的 array 类型(dtype) 都是 float64。
  7. 普通运算操作符对 array 里的元素是逐个处理的,包括乘法和乘方,矩阵乘法要用函数 .dot(A, B)
  8. 组合两个 array,水平组合函数 hstack( [A, B]),等同于 concatenate( [A, B], axis=1);垂直组合函数 vstack( [A, B] ),等同于 concatenate( [A, B], axis=0);深度组合函数 dstack( [A, B] ),在第三个轴上进行组合。同理反操作,也有分割函数 hsplitvsplitdsplitsplit,最后一个也是要有 axis=1 或者 axis = 0。
  9. 重复的区别:np.array([1, 2, 3] * 3) 返回 array([1, 2, 3, 1, 2, 3, 1, 2, 3]);而 np.repeat([1, 2, 3], 3) 返回 array([1, 1, 1, 2, 2, 2, 3, 3, 3])
  10. a.argmax()a.argmin() 返回 array 中最大和最小值的 index。
  11. 产生随机 array 代码例子:test = np.random.randint(0, 10, (4,3))
  12. 遍历方法。通过 row:for row in test:;通过 index:for i in range(len(test)):;通过 row 和 index:for i, row in enumerate(test):;通过 zip 函数遍历多个:for i, j in zip(test, test2):
  13. 如下代码块反映了不复制、浅复制 (view) 和复制 (copy):
  • 不复制:

      >>> a = arange(12)
      >>> b = a      #不创建新对象
      >>> b is a     # a和b是同一个数组对象的两个名字
      True  
      >>> b.shape = 3,4    #也改变了a的形状  
      >>> a.shape  
      (3, 4)  
    
  • 浅复制 (view):

      >>> c = a.view()  
      >>> c is a  
      False  
      >>> c.base is a      #c是a持有数据的镜像  
      True  
      >>> c.flags.owndata  
      False  
      >>>  
      >>> c.shape = 2,6    # a的形状没变  
      >>> a.shape  
      (3, 4)  
      >>> c[0,4] = 1234        #a的数据改变了  
      >>> a  
      array([[   0,    1,    2,    3],  
             [1234,    5,    6,    7],  
             [   8,    9,   10,   11]])  
    

切片数组返回它的一个 view

    >>> s = a[ : , 1:3]     # 获得每一行1,2处的元素  
    >>> s[:] = 10           # s[:] 是s的镜像。注意区别s=10 and s[:]=10  
    >>> a  
    array([[   0,   10,   10,    3],  
           [1234,   10,   10,    7],  
           [   8,   10,   10,   11]])  
  • 深复制 (copy)

      >>> d = a.copy()       #创建了一个含有新数据的新数组对象  
      >>> d is a  
      False  
      >>> d.base is a        #d和a现在没有任何关系  
      False  
      >>> d[0,0] = 9999  
      >>> a  
      array([[   0,   10,   10,    3],  
             [1234,   10,   10,    7],  
             [   8,   10,   10,   11]]) 
    
  1. We can perform conditional indexing. Here we are selecting values from the array that are greater than 30. (Also see np.where)

    >>> r = np.array ([[ 0,  1,  2,  3,  4,  5],
           [ 6,  7,  8,  9, 10, 11],
           [12, 13, 14, 15, 16, 17],
           [18, 19, 20, 21, 22, 23],
           [24, 25, 26, 27, 28, 29],
           [30, 31, 32, 33, 34, 35]])
    >>> r[r > 30]
    array([31, 32, 33, 34, 35])
    >>> r[r > 30] = 30
    array([[ 0,  1,  2,  3,  4,  5],
           [ 6,  7,  8,  9, 10, 11],
           [12, 13, 14, 15, 16, 17],
           [18, 19, 20, 21, 22, 23],
           [24, 25, 26, 27, 28, 29],
           [30, 30, 30, 30, 30, 30]])
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容