Python 科学计算 、数据库(问题汇集)

1   linear programming in python?

 

6 Answers
active
oldest
votes
up vote
9
down vote
accepted
    

Is there a reason why you have to do it in Python?

If you do not have to then it is a lot more easier to do this in a modeling langage, see here.

If you absouletly have to do it in Python then I would suggest PyGLPK or PyMathProg.

I have been using GLPK for 8 years now and I highly recommend it, however I have never tried these Python interfaces so I cannot help you any further with that.
shareimprove this answer
    
answered May 22 '12 at 16:06
Ali
25.4k888145
    
4      
    
+1 for "use the right tool." – djechlin May 22 '12 at 22:46
        
    
use PuLP, its an awesome python interface for GLPK, CPLEX or Gurobi – Tom Larkworthy Oct 7 '13 at 20:18
2      
    
Anonymous downvotes aren't helping anybody. What is wrong with the answer? – Ali Nov 1 '14 at 20:47
add a comment
up vote
15
down vote
    

I'd recommend the package cvxopt for solving convex optimization problems in Python. A short example with Python code for a linear program is in cvxopt's documentation here.
detials

http://stackoverflow.com/questions/10697995/linear-programming-in-python

http://abel.ee.ucla.edu/cvxopt/examples/tutorial/lp.html

 

2 Python 两两互换礼物

 

 

import random

def selectObject(tcnt):
    mapRet = {}
    maxTry = 1000000 ##最大尝试次数
    cnt = 0
    while(len(mapRet) < tcnt):
        cnt += 1
        can = random.randint(1, tcnt)
        if(len(mapRet) + 1 != can and (can not in mapRet.values())):
            mapRet[len(mapRet) + 1] = can
        elif cnt > maxTry:
            mapRet = {}
            cnt = 0
    print mapRet
View Code

 

 

3 PySAL: Python Spatial Analysis Library              

http://pysal.github.io/index.html

 

4 Python 链接数据库

# -*- coding: utf-8 -*-
"""
Created on Fri Apr 03 21:59:32 2015
"""

import pyodbc
from numpy import *

cnxn = pyodbc.connect('DSN=TH;UID=root;PWD=1234')




cursor = cnxn.cursor()


ODBCDNS = ';'.join([
    'DRIVER={{SQL SERVER}',
    'SERVER= localhost',
    'DATABASE=tmall',
    'UID=root',
    'PWD=1234'
    ])

cnxn = pyodbc.connect(ODBCDNS)
cursor=cnxn.cursor()
cursor.execute("select * FROM dbo.3MIN")
result = [row for row in curr]
cnxn.close()
 
import pprint
pprint.pprint(result)

 

python  图像处理,数字图片识别

http://scikit-image.org/docs/dev/auto_examples/#detection-of-features-and-objects

http://stackoverflow.com/questions/9413216/simple-digit-recognition-ocr-in-opencv-python

 

getattr函数,可以得到一个直到运行时才知道名称的函数的应用。
>>> li = [ "Larry", "Curly" ]
>>> li.pop
<built-in method pop of list object at 0xb76b364c>
>>> getattr( li, "pop" )
<built-in method pop of list object at 0xb76b364c>
>>> getattr( li, "append" )( "Moe" )
>>> li
['Larry', 'Curly', 'Moe']
>>> 

  从上面的代码可以看出 li.pop 等用于 getattr( li, "pop" ),但是这样不是调用pop函数,真正的

的调用是getattr( li, "append" )("Moe")。下面的例子是对getattr()所代表函数的参数的分析,可以

看出假如参数超过append的参数个数将会出错
>>> getattr( li, "append" )( "Moe1", "Moe2" )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (2 given)
>>> get = getattr( li, "append" )
>>> get( "Moe1" )
>>> li
['Larry', 'Curly', 'Moe', 'Moe1']
>>> 

  

具体问题:

以下是 stackoverflow上提出的一个问题

 have a str object for example: menu='install'. I want to run install method from this string. For example when I call menu(some, arguments) it will call install(some, arguments). Is there any way to do that ?

然后其中的一个用getattr的解答是:
class MyClass(object):
    def install(self):
          print "In install"
 
method_name = 'install' # set by the command line options
my_cls = MyClass()
method = getattr(my_cls, method_name)
if not method:
    raise Exception("Method %s not implemented" % method_name)
method()

  

      从getattr这个问题可以看到python的一个很重要的功能自省。在《Dive into python》是这样介绍----“自省是指代码可以查看内存中以对象形式存在的其它模块和函数,获取它们的信息,并对它们进行操作。用这种方法,你可以定义没有名称的函数,不按函数声明的参数顺序调用函数,甚至引用事先并不知道名称的函数。”

 

参考资料:

              stackoverflow 网站

              《Dive into python》
Python getattr

 

 

 Python 变换字符的进制

import binascii

binascii.b2a_hex(u"data".encode("utf8"))

 

 

python 经纬度距离和日期间隔

 

import math
from datetime import datetime

def rad(data):
    
    return math.pi * float(data) / 180
    
def dislonlat(lon1, lat1, lon2, lat2):
  
    radlat1 = rad(lat1)
    radlat2 = rad(lat2)
    a = radlat1 - radlat2
    b = rad(lon1) - rad(lon2)
    ret = 2 * math.asin(math.sqrt(math.pow(math.sin(a/2),2) + math.cos(radlat1) * math.cos(radlat2)*math.pow(math.sin(b/2),2)))
    ret = ret * 6378.137;
    ret = round(ret, 4)   ## 保留四位小数
    
    return ret * 1000    ##单位米


def disTime(date1, date2):
    one = datetime.strptime(date1, '%Y%m%d%H%M%S') 
    two = datetime.strptime(date2, '%Y%m%d%H%M%S') 
    
    return (two-one).seconds
  
View Code

 

posted @ 2015-12-22 14:58  kongmeng  阅读(430)  评论(0编辑  收藏  举报