zoukankan      html  css  js  c++  java
  • CS231n:Python Numpy教程

    • Python
      • 基本数据类型
      • 容器
        • 列表
        • 字典
        • 集合
        • 元组
      • 函数  
    • Numpy
      • 数组  
      • 访问数组
      • 数据类型
      • 数组计算
      • 广播
    • SciPy
      • 图像操作
      • MATLAB文件
      • 点之间的距离
    • Matplotlib
      • 绘制图形
      • 绘制多个图形
      • 图像

    Python


    python实现的经典的quicksort算法

     1 def quicksort(arr):
     2     if len(arr)<=1:
     3         return arr
     4     pivot = arr[len(arr)/2]
     5     left = [x for x in arr if x < pivot]
     6     middle = [x for x in arr if x == pivot]
     7     right = [x for x in arr if x > pivot]
     8     return quicksort(left) + middle + quicksort(right)
     9 
    10 print quicksort([3,6,8,10,1,2,1])
    11 #prints "[1,1,2,3,6,8,10]"

    数字:整型和浮点型的使用与其他语言类似。

    x = 3
    print(type(x))#printd "<type 'int'>"
    print(x) #prints "3"
    print(x + 1) #Addition;prints "4"
    print(x - 1) #Subtraction; prints "2"
    print(x * 2) #Multiplication; prints "6"
    print(x ** 2) #Expoentiaton; prints "9"
    x += 1
    print(x)# prints "4"
    x *= 2
    print(x) #prints "8"
    y = 2.5
    print(type(y))# prints "<type 'float'>"
    print(y,y + 1,y * 2,y ** 2) #prints "2.5 3.5 5.0 6.25"

    注意!!!! Python 中没有x++和x--的操作符。

    布尔型:Python实现了所有的布尔逻辑。

    t = True
    f = False
    
    print(type(t)) #prints "<type'bool'>"
    print(t and f ) #logical AND; prints "False"
    print(t or f )#Logical OR; prints "True"
    print( not t )#Logical NOT; prints "False"
    print(t != f) #Logical XOR;prints "True"

    字符串

    hello = 'hello' #String literals  can use single quotes
    world = 'world' # pr double quotes; it does not matter,
    print(hello) #prints "hello"
    print(len(hello)) #String length; prints "5"
    hw = hello + ' '+ world #String concatention
    print(hw)# prints "hello world "
    hw12 = '%s %s %d' % (hello,world,12) #sprintf style string formatting
    print(hw12)#prints "hello world 12"

    字符串对象的方法

    s = "hello"
    print(s.capitalize()) #Capitalize a string prints "hello"
    print(s.upper()) #Convert a stirng to upercase; prints "HELLO"
    print(s.rjust(7))#Righr-justify a string,padding with space; prints "  hello"
    print(s.center(7))#Center a string,padding with space;prints " hello "
    print(s.replace('l','(ell)')) #Replace all instance of one substring with another;
                                    #prints "he(ell)(ell)o"
    print(' world'.strip())#Strip leading and trailing whitespace; prints "world"

    容器 Containers

    容器类型:列表(lists) 字典(dictionaries) 集合(sets)和元组(tuples)

    列表Lists

    列表就是python 中的数组,但是列表长度可变,且能包含不同类型元素

    xs  = [3,1,2] #Create a list
    print( xs ,xs[2]) #prints "[3,1,2] 2"
    print(xs[-1]) #Negative indices count from the end of the list; prints "2"
    xs[2] = 'foo' #Lists can contain elements of different types
    print(xs) #Prints "[3,1,'foo']"
    xs.append('bar')#Add a new element to the end of the list
    print(xs) #prints
    x = xs.pop()#Remove and return the last element of the list
    print(x,xs)#Prints "bar [3,1,'foo']"

    切片Slicing : 为了一次性地获取列表中的元素,python 提供了一种简洁的语法,这就是切片。

    nums = list(range(5)) #range is a built-in function that creates a list of integers
    print(nums)#prints "[0,1,2,3,4]"
    print(nums[2:4])#Get a slice from index 2 to 4 (exclusive); prints '[2,3]"
    print(nums[2:])#Get a slice from index 2 to the end; prints "[2,3,4]"
    print(nums[:2])#Get a slice from the start to index 2 (exclusive); prints "[0,1]"
    print(nums[:])#Get a slice of the whole list ; prints "[0,1,2,3,4]"
    print(nums[:-1])#Slice indices can be negative; prints "[0,1,2,3]"
    nums[2:4] = [8,9]      # Assign a new sublist to a slice
    print(nums)#prints "[0,1,8,9,4]"

    在Numoy数组的内容中,再次看到切片语法。

    循环LOOPS

    animals =['cat','dog','monkey']
    for animal in animals:
        print(animal)
    #prints "cat", "dog","monkey",each on its own line.

    如果想要在循环体内访问每个元素的指针,可以使用内置的enumerate函数

    animals = ['cat ','dog','monkey']
    for idx,animal in enumerate(animals):
        print('#%d: %s'%(idx + 1,animal))
    
    #prints "#1: cat","#2: dog","#3: monkey",each on its own line

    列表推导List comprehensions :在编程的时候,我们常常想要将一个数据类型转换为另一种。

    将列表中的每个元素变成它的平方。

    nums = [0,1,2,3,4]
    squares = []
    for x in nums:
        squares.append(x ** 2)
    print(squares) #Prints [0,1,4,9,16]

    使用列表推导:

    nums  = [0,1,2,3,4]
    squares = [x ** 2 for x in nums]
    print(squares) # prints [0,1,4,9,16]

    列表推导还可以包含条件:

    nums = [0,1,2,3,4]
    even_squares = [x ** 2 for x in nums if x % 2 == 0]
    print(even_squares) # prints "[0,4,16]"

    字典Dicionaries

    字典用来存储(键,值)对,

    d = {'cat':'cute','dog':'furry'}#Create a new dictionary with come data
    print(d['cat']) #Get an entry from a dictionary ; prints "cute"
    print('cat' in d) #Check if a dictionary has a given key; prints "Ture"
    d['fish'] = 'wet' #Set an entry in a dictionary
    print(d['fish']) # prints "wet"
    # print d['monkey'] #KeyError: 'monkey ' not a key of d
    print(d.get('monkey','N/A')) # Get an element with a default; prints "N/A"
    
    print(d.get('fish','N/A'))#Get an element with a default ; prints "wet"
    del d['fish'] #Remove an element from a dictionary
    print(d.get('fish','N/A')) # "fish" is no longer a key ;prints "N/A"

    循环LOOPS:在字典中,用键来迭代。

    d = {'person':2,'cat':4,'spider':8}
    for animal in d:
        legs = d[animal]
        print('A %s has %d legs' % (animal,legs))
    #Prints "A person has 2 legs", " A spider has 8 legs","A cat has 4 legs"

    访问键和对应的值,使用items方法:

    d = {'person':2,'cat':4,'spider':8}
    for animal,legs in d.items():
        print('A %s has %d legs' % (animal,legs))
    #prints " A person has 2 legs","A spider has 8 legs","A cat has 4 legs"

    字典推导Dictionary comprehensions :和列表推导类似,但是允许你方便地构建字典。

    nums = {0,1,2,3,4}
    even_num_square = {x:x**2 for x in nums if x % 2 == 0}
    print(even_num_square) #  prints "{0:0,2:4,4:16}"
  • 相关阅读:
    HBase Cassandra比较
    重新认识HBase,Cassandra列存储——本质是还是行存储,只是可以动态改变列(每行对应的数据字段)数量而已,当心不是parquet
    HBase底层存储原理——我靠,和cassandra本质上没有区别啊!都是kv 列存储,只是一个是p2p另一个是集中式而已!
    Cassandra 数据模型设计,根据你的查询来制定设计——反范式设计本质:空间换时间
    【LeetCode】【Python解决问题的方法】Best Time to Buy and Sell Stock II
    LVM逻辑卷管理命令
    Java引进和应用的包装类
    Android 4.0新组件:GridLayout详细说明
    【剑指offer】打印单列表从尾部到头部
    原因以及如何避免产生僵尸进程
  • 原文地址:https://www.cnblogs.com/Davirain/p/8460282.html
Copyright © 2011-2022 走看看