1. 程式人生 > >cs231n---Python Numpy教程(第一彈)

cs231n---Python Numpy教程(第一彈)

基本資料型別(程式碼基於Python 3)

和大多數程式語言一樣,擁有基本資料型別:整型,浮點型,布林型和字串等

數字:整型與浮點型的使用與其他語言類似

x = 3
print(type(x))
print (x)
y = 2.5
print(type(y))
print(y, y + 1, y * 2, y ** 2)

布林型:實現所有的布林邏輯用的是英語而不是操作符(&&,||)

t = True
f = False
print(type(t))
print(t and f)
print(t or f)
print(not t)
print(t != f)

字串:Python對於字串的支援很棒!

# 字串 
h = 'hello'
w = 'world'
print(h)
print(w)
print(len(h)) # String length 返回字串長度
hw = h + ' ' + w # 字串拼接
print(hw)
hw12 = '%s %s %d' % (h, w, 12)
print(hw12)

拼接, 輸出多個 都OK

字串還有一些有用的方法,比如:

s = 'hello'
print(s.capitalize()) #首字母大寫
print(s.upper()) #全部大寫
print(s.rjust(7))
print(s.center(7))
print(s.replace('l','(ell)')) # 替換所有字母l
print('  world')
print('  world'.strip()) # 刪除前面空格,頂前

Containers(譯為:容器):list, dictionary,set,tuple

list

列表是python中的陣列,長度可變且能包含不同型別元素

# 列表list
xs = [3, 1, 2] #建立列表
print(xs, xs[2], xs[0]) # index 索引從0開始
print(xs[-1]) # 倒數第一個
xs[2] = 'foo' # 替換list中第三個元素
print(xs)
xs.append('bar') # 最後面加元素
print(xs)
x = xs.pop() # 刪除最後一個元素
print(x, xs)

切片Slicing:為了一次性獲取列表中的元素,python提供了一種簡潔的語法——切片slicing

# 切片slicing
nums =[0, 1, 2, 3, 4]
print(nums)
print(nums[2:4]) # 取索引2,3 即第3個和第4個,最後一個取不到
print(nums[2:])  # 從索引2 即第3個取到最後
print(nums[:2])  # 從頭取到索引1,即第2個,取不到索引2
print(nums[:])   # 取所有
print(nums[:-1]) # 從頭取除了最後一個
nums[2:4] = [8, 9] # 替換
print(nums)

在Numpy庫中,還會再次接觸到切片

迴圈loops:我們可以遍歷列表中的每一個元素

# 迴圈loops,遍歷每一個元素
animals = ['cat', 'dog', 'monkey']
for animal in animals:
    print(animal)

若想訪問每個元素的指標,使用內建的enumerate函式

# 迴圈,訪問每個元素的指標,使用內建的enumerate函式
animals = ['cat', 'dog', 'monkey']
for idx, animal in enumerate(animals):
    print('#%d: %s' % (idx, animal))

列表推導List comprehensions:我們想把一種資料型別轉換為另一種

例子:把列表中每個元素將其平方

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

使用列表推導,程式碼會簡化很多:

# List comprehensions
nums = [0, 1, 2, 3, 4]
squares = [x ** 2 for x in nums]
print(squares)

列表推導還可以包含條件:

# 包含條件的List comprehensions
nums = [0, 1, 2, 3, 4]
even_squares = [x ** 2 for x in nums if x % 2 == 0]
print(even_squares)

字典dictionary

字典用來儲存對(鍵,值):

# 字典
d = {'cat': 'cute', 'dog': 'furry'} # 建立一個字典
print(d['cat']) # 得到鍵cat的值cute
print('cat' in d) # 判斷鍵cat是否在字典d中
d['fish'] = 'wet' 
print(d['fish'])
print(d.get('monkey', 'N/A')) # 得到預設值,若沒有則N/A
print(d.get('fish', 'N/A'))
del d['fish'] # 刪除
print(d.get('fish', 'N/A'))

迴圈loops:在字典中,用鍵來迭代更加容易

# 迴圈loops:在字典中,用鍵來迭代更加容易
d = {'person': 2, 'cat': 4, 'spider': 8}
for animal in d:
    print(animal)
    legs = d[animal]
    print('A %s has %d legs' % (animal, legs))

若訪問鍵和對應的值使用iteritems方法(python2),python3中更改為items方法:

# 訪問鍵和對應的值使用iteritems方法(pyhon2),python3中更改為items方法:
d = {'person':2, 'cat': 4, 'spider': 8}
#for animal, legs in d.iteritems():
for animal, legs in d.items():
    print('A %s has %d legs' %(animal, legs))

字典推導Dictionary comprehensions:和列表推導類似,但是允許你方便地構建字典

nums = [0, 1, 2, 3, 4]
even_num_to_square = {x: x ** 2 for x in nums if x % 2 == 0}
print(even_num_to_square)

集合Sets

集合是獨立不同個體的無序集合。

# 集合sets
animals = {'cat', 'dog'}
print('cat' in animals)
print('fish' in animals)
animals.add('fish')
print('fish' in animals)
print(len(animals))
animals.add('cat')
print(len(animals))
animals.remove('cat')
print(len(animals))

迴圈loops:在集合中迴圈的語法和列表一樣,但集合是無序的所以訪問集合元素的時候,不能做關於順序的假設。

animals = {'cat', 'dog', 'fish'}
for idx, animal in enumerate(animals):
    print('%#d: %s' %(idx + 1 , animal))

集合推導Set comprehension :和字典一樣,可以很方便的構建集合

# 集合推導
from math import sqrt
nums = {int(sqrt(x)) for x in range(30)}
print(nums)

元組Tuples

元組是一個值的所有序列表(不可改變)。和列表的不同:元組可以作為字典中的鍵和集合的元素,列表不行。

# 元組()
d = {(x, x + 1): x for x in range(10)}
print(d)
t = (5, 6)
print(type(t))
print(d[t])
print(d[(1,2)])

函式Function

# def 來定義函式
def sign(x):
    if x > 0:
        return 'positive'
    elif x < 0:
        return 'negative'
    else:
        return 'zero'

for x in [-1, 0, 1]:
    print(sign(x))

常用可選引數來定義函式

# def 可選引數來定義函式
def hello(name, loud=False):
    if loud:
        print('HELLO, %s' % (name.upper()))
    else:
        print('Hello, %s!' % (name))

hello('Bob')
hello('Fred', loud=True)

類Class

# 類 Class
class Greeter(object):
    
    # Constructor
    def __init__(self, name):
        self.name = name # create an instance variable
        
    # Instance method
    def greet(self, loud=False):
        if loud:
            print('HELLO, %s' % self.name.upper())
        else:
            print('hello, %s' % self.name)
            
g = Greeter('Fred') # construct an instance of the Greeter class
g.greet()  # call an instance method print "hello, Fred"
g.greet(loud=True)  # print "HELLO, FRED"
以上內容轉載整理來自知乎專欄點選開啟連結,侵刪侵刪。