类别归档:Python

Python is a programming language that lets you work quickly and integrate systems more effectively.

RSS feed of Python

递归计算Ramanujan无穷根式

拉马努金无穷根式是印度数学家拉马努金(Srinivasa Ramanujan)于20世纪初提出的。

f(x) = sqrt(1 + (x + 1) * f(x + 1))

上面的函数是一个递归式,下面用Python编程计算该函数的值。

Python代码:

import math
class Ramanujan(object):
    def sum(self, d, md):
        if d > md:
            return 0
        return math.sqrt(1 + (d + 1) * self ...

继续阅读

Python实现图像与字符串互转

在存储或者传输图像时,我们经常需要将图像转换成字符串。

与其他编程语言一样(比如Java),Python也可以实现将图像用字符串进行表示。

使用Python进行转换非常的简单,关键部分就是使用“base64”模块,它提供了标准的数据编码解码方法。

图像转换成字符串

Python代码:

import base64
 
with open("t.png", "rb") as imageFile:
    str = base64.b64encode(imageFile.read())
    print str

输出:

iVBORw0KGgoAAAANSUhEUgAAAuAAAACFCAIAAACVGtqeAAAAA3
NCSVQICAjb4U/gAAAAGXRFWHRTb2Z0d2FyZQBnbm9tZS1zY3Jl
ZW5zaG907wO/PgAAIABJREFUeJzsnXc81d8fx9+fe695rYwIaa
...

字符串转换成图像

Python代码:

fh = open("imageToSave.png", "wb ...

继续阅读

使用scikit-learn KMeans实现验证码的字符切分

字符切分是实现机器识别验证码的一个必要步骤。

验证码样本如下图所示:

验证码原始图

使用PIL读入图像,进行二值化处理(Binarize),然后利用sklearn.cluster中的kmeans进行字符切分,最后用matplotlib.pyplot输出结果。

拆分效果如下图所示:

参考:http://dsp.stackexchange.com/questions/23662/k-means-for-2d-point-clustering-in-python

Python代码:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from PIL import Image

##############################################################################
# Binarize image data ...

继续阅读

安装numpy提示Unable to find vcvarsall.bat懒人解决方案

在Windows命令提示符下使用pip安装numpy时,提示错误:error: Unable to find vcvarsall.bat

操作系统:Windows 7 x32

Python版本:Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32

懒人解决方案:

前置条件:安装pip(https://pypi.python ...

继续阅读

Python内置函数map与reduce用法简介

map与reduce是两个十分常用的Python内置函数,它们与Hadoop中的MapReduce在某些方面有一定的相似之处。

map函数:

map(function, iterable, ...)

对于可迭代对象(iterable)中的每一个元素调用处理函数(function),并以列表(list)形式返回每个元素的调用结果。如果传递了不止一个可迭代对象参数,函数从各个可迭代对象中取出相同位置的元素加以并行处理。如果可迭代对象长短不一,则为较短的参数末尾补充None元素,使其长度补齐。如果处理函数为None,则视为恒等函数(identity function,返回值等于传入参数的函数叫做恒等函数);如果传入了多个参数,map()会返回一个包含各个可迭代对象对应结果的元组列表(可以视为转置操作)。可迭代参数可以是一个序列(sequence),或者任何可以迭代的对象;结果总是返回list。

Apply function to every item of iterable and return ...

继续阅读