標籤

C (1) Matlab (11) maple (2) paper (1) python (14)
顯示具有 python 標籤的文章。 顯示所有文章
顯示具有 python 標籤的文章。 顯示所有文章

2011年4月17日 星期日

#Vandermonde Approach

import numpy as np
import time

start=time.clock()
q=0
O=input()
x=[1,2,3,4]
y=[1,1,1,1]
n=len(x)

A=[[1 for k in range(n)]for k in range(n)]

for i in range(n):
    for j in range(n):
        A[i][j]=x[i]**j
X=np.matrix(A)
Y=np.array([[y[i]] for i in range(n)])

a=X**-1*Y

for i in range(n):
    q=q+a[i][0]*(O**i)
  

print q





>>> X
matrix([[ 1,  1,  1,  1],
        [ 1,  2,  4,  8],
        [ 1,  3,  9, 27],
        [ 1,  4, 16, 64]])
>>> Y
array([[1],
       [1],
       [1],
       [1]])
>>> ================================ RESTART ================================
>>>X**-1 *Y
[[  1.00000000e+00]
 [ -6.66133815e-16]
 [  0.00000000e+00]
 [ -2.77555756e-17]]



matrix

>>>m=[[1,2],[3,4]]
>>>m[0][0]=9
[[9, 2], [3, 4]]


>>> m=[0 for e in range(10)]
>>> m
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


>>> a=[3,4,5]
>>> b=[1,2,3]

>>> m=[a*e for e in b]
>>> m
[[3, 4, 5], [3, 4, 5, 3, 4, 5], [3, 4, 5, 3, 4, 5, 3, 4, 5]]
>>> m=[2*e for e in a]
>>> m
[6, 8, 10]

List Comprehensions

作者  zhouer ( )                                               看板  Python
 標題  [野人獻曝]  List Comprehensions
 時間  Mon Dec 12 10:59:26 2005
───────────────────────────────────────

[ x for x in range(10) ]
這跟 range(10) 的結果一模一樣,是:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

def f(x): return 3 * x + 1
[ f(x) for x in range(10) ]
可以想像,這樣做的效果就是把 0 .. 9 分別帶入 f(x)
所以得到的結果是:[1, 4, 7, 10, 13, 16, 19, 22, 25, 28]

[ f(x) for x in range(10) if x % 2 == 0 ]
和上面類似,但只處理偶數,所以結果是:[1, 7, 13, 19, 25]

[ (x, y) for x in range(3) for y in range(3) ]
也可以有數個變數,結果如下:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

2011年4月13日 星期三

networkX


>>> import networkx as nx

>>> G=nx.Graph()
>>> G.add_node("spam")
>>> G.add_edge(1,2)
>>> print(G.nodes())
[1, 2, 'spam']
>>> print(G.edges())
[(1, 2)]

最短路徑
>>> g=nx.Graph()
>>> g.add_edge(1,2)
>>> g.add_edge(1,4)
>>> g.add_edge(2,3)
>>> g.add_edge(2,4)
>>> g.add_edge(3,4)

>>> length=nx.single_source_shortest_path_length(G,1)
>>> length
{0: 1, 1: 0, 2: 1, 3: 2, 4: 3}
>>> length=nx.all_pairs_shortest_path_length(G)
>>> length
{0: {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}, 1: {0: 1, 1: 0, 2: 1, 3: 2, 4: 3}, 2: {0: 2, 1: 1, 2: 0, 3: 1, 4: 2}, 3: {0: 3, 1: 2, 2: 1, 3: 0, 4: 1}, 4: {0: 4, 1: 3, 2: 2, 3: 1, 4: 0}}
>>> 
>>> nx.bidirectional_shortest_path(G,1,2)
[1, 2]

2011年4月10日 星期日

check data

t=open('pima.txt') #開啟 pima.txt

import string    #匯入 string

for k in range (768):        
    a=string.split(t.readline())          #string.split('a,b,c') ==> [a,b,c]
    if '0' not in a[2:7]:
        print a

這個是用來找檔案 把特定檔案刪除的程式

2011年4月7日 星期四

Hailstone squence 冰雹數列生成

g=0
x=input()

while x!=1 :
    if x%2!=0:
        x=(3*x+1)/2
        g=g+1
    else :
        x=x/2
        g=g+1
else:
    print x
    print g

2011年4月6日 星期三

插值法

def data(i):      # 先定義輸入data的函數
    f={}
    k=0
    while k<i:
        print "input x_%r"%k
        x_k=input()
        print "input f(x_%r)"%k
        f[x_k]=input()
        k=k+1
    return f
 
def inter(f,x):    # 以下是插值法 f要是一個dic才行
    i=1
    p=[]
    j=0
    Result=0
    m=0
    k=len(f)
    for j in range(0,k):
        g=1.00
        for m in range(0,k):
            if j!=m:
                g = g*(x-f.keys()[m])/(f.keys()[j]-f.keys()[m])
        p.append(g*f.values()[j])
    print p
    g=sum(p)
    print g

不純熟,只好用最笨的方法寫:'(

#dic

.keys() 是dic的鍵
.values() 是dic的值
.items()會使dic轉換成一個型如[(key,value)..]tuple的 list

一次給多個變量

>>> v=(1,2,3,4,5)
>>> (x,y,z,a,b)=v
>>> v
(1, 2, 3, 4, 5)
>>> x
1
>>> 2
2
>>> x
1
>>> y
2

#連續給值
例如
(mon,tue,wed,thu,fri,sat,sun)=range(7)
then

>>>mon
0
>>>tue
1

#tuple

tuple是不可變,tuple筆list操作速度快
可以用在 dic 中做key,因為dic中的key也是不可變 list就不行。

#list

append 增加單一元素
extend([  ]) 擴充 []元素到 list中
remove() 刪除list中元素 若此元素有多個 則刪除第一個
pop() 會刪除 list中最後一個元素 且 return 最後一個元素給你看,所以不同於li[-1].
list中有+ 感覺有點像擴充 ,但對於大型的list extend處里速度會比較良好。

mapping整個list

>>>li=[1,9,8,4]
>>>[elem*2 for elem in li]
[2,18,16,8]

#Operator

OperationSyntaxFunction
Additiona + badd(a, b)
Concatenationseq1 + seq2concat(seq1, seq2)
Containment Testobj in seqcontains(seq, obj)
Divisiona / bdiv(a, b) (without __future__.division)
Divisiona / btruediv(a, b) (with__future__.division)
Divisiona // bfloordiv(a, b)
Bitwise Anda & band_(a, b)
Bitwise Exclusive Ora ^ bxor(a, b)
Bitwise Inversion~ ainvert(a)
Bitwise Ora | bor_(a, b)
Exponentiationa ** bpow(a, b)
Identitya is bis_(a, b)
Identitya is not bis_not(a, b)
Indexed Assignmentobj[k] = vsetitem(obj, k, v)
Indexed Deletiondel obj[k]delitem(obj, k)
Indexingobj[k]getitem(obj, k)
Left Shifta << blshift(a, b)
Moduloa % bmod(a, b)
Multiplicationa * bmul(a, b)
Negation (Arithmetic)- aneg(a)
Negation (Logical)not anot_(a)
Positive+ apos(a)
Right Shifta >> brshift(a, b)
Sequence Repetitionseq * irepeat(seq, i)
Slice Assignmentseq[i:j] = valuessetitem(seq, slice(i, j), values)
Slice Deletiondel seq[i:j]delitem(seq, slice(i, j))
Slicingseq[i:j]getitem(seq, slice(i, j))
String Formattings % objmod(s, obj)
Subtractiona - bsub(a, b)
Truth Testobjtruth(obj)
Orderinga < blt(a, b)
Orderinga <= ble(a, b)
Equalitya == beq(a, b)
Differencea != bne(a, b)
Orderinga >= bge(a, b)
Orderinga > bgt(a, b)

py2exe使用

先建立.py,內容

for distutils.core import setup
impory py2exe

setup(console=['要轉檔的檔案名稱.py'])

把此py放在要轉的同一個目錄
then 進入cmd

cd  路徑
setup.py py2exe


參考:http://ez2learn.com/index.php/python-tutorials/advance-tutorials/176-py2exepythonexe

operator. 將 [,,,,,]中元素相乘

import operator
reduce(operator.mul,[2,3,4,5])

=> 120