Pythonxy测试 | 寒山烟雨
现在的位置: 首页 > 滴水穿石 > 正文

Pythonxy测试

2012年12月03日 滴水穿石 ⁄ 共 693字 ⁄ 字号 评论 6 条 ⁄ 阅读 9,012 views 次

最近试了一下Pythonxy,集成了Numpy和Scipy包的Py,在功能方面基本上能和Matlab相媲美了。除了一些专有的功能,Py和matlab相差也就在速度上了,毕竟一个是编译型程序,一个是解释性语言,在速度方面有着本质上的区别。不过Py的Numpy包里的wave和f2py模块,能让Py有着C和Fortran的运算速度。

闲话少说,下边是生成蕨类植物叶子的一段程序,主要是生成分形图形。蕨类植物的局部自相似性较适合做分形图形,计算过程中像素点选择有些少,算出来的图片真实感并不强。源码来自于《Python科学计算》

 Python | 
 
 copy code |
?

01
import numpy as np
02
import matplotlib.pyplot as pl
03
import time
04
 
05
ep1=np.array([[0,0,0],[0,0.16,0]])
06
p1=0.01
07
 
08
ep2=np.array([[0.2,-0.26,0],[0.23,0.24,0.44]])
09
p2=0.7
10
 
11
ep3=np.array([[-0.15,0.28,0],[0.26,0.24,0.44]])
12
p3=0.07
13
 
14
ep4=np.array([[0.85,0.04,0],[-0.04,0.85,1.6]])
15
p4=0.85
16
 
17
def ifs(p,eq,init,n):
18
      pos=np.ones(3,dtype=np.float)
19
      pos[:2]=init
20
 
21
      p=np.add.accumulate(p)
22
      rands=np.random.rand(n)
23
      select=np.ones(n,dtype=np.int)*(n-1)
24
      for i,x in enumerate(p[::-1]):
25
            select[rands<x]=len(p)-i-1
26
 
27
      result=np.zeros((n,2),dtype=np.float)
28
      c=np.zeros(n,dtype=np.float)
29
 
30
      for i in xrange(n):
31
            eqidx=select[i]
32
            tmp=np.dot(eq[eqidx],pos)
33
            pos[:2]=tmp
34
 
35
            result[i]=tmp
36
            c[i]=eqidx
37
 
38
      return result[:,0],result[:,1],c
39
 
40
start=time.clock()
41
x,y,c=ifs([p1,p2,p3,p4],[ep1,ep2,ep3,ep4],[0,0],1000000)
42
print time.clock()-start
43
 
44
pl.figure(figsize=(6,6))
45
pl.subplot(121)
46
pl.scatter(x,y,s=1,c="g",marker="s",linewidth=0)
47
pl.axis("equal")
48
pl.axis("off")
49
pl.subplot(122)
50
pl.scatter(x,y,s=1,c=c,marker="s",linewidth=0)
51
pl.axis("equal")
52
pl.axis("off")
53
pl.subplots_adjust(left=0,right=1,bottom=0,top=1,wspace=0,hspace=0)
54
pl.gcf().patch.set_facecolor("white")
55
pl.show()
56

计算的结果:


 PS: 为了这个东西,还是回到了Py2.7。=_=!!!

0

目前有 6 条留言    访客:5 条, 博主:1 条

  1. 正版软件分享 2013年01月18日 下午4:43  @回复  Δ-49楼 回复
    CoolNovo CoolNovo Windows Windows

    新年好,比较久没有更新了。

  2. tusooa 2012年12月15日 下午1:07  @回复  Δ-48楼 回复
    Firefox Firefox GNU/Linux GNU/Linux

    额。perl :em04

  3. reverland 2012年12月13日 下午6:43  @回复  Δ-47楼 回复
    Firefox Firefox GNU/Linux GNU/Linux

    numpy和scipy不支持3吗?


    • 管理员
      hsyyf 2012年12月13日 下午9:31  @回复  ∇地下1层 回复
      Wordpress App Wordpress App Android Android

      支持,但pyxy一整套只有2.7的。。。╮(╯▽╰)╭

  4. lainme 2012年12月06日 下午6:33  @回复  Δ-46楼 回复
    Firefox Firefox GNU/Linux GNU/Linux

    sagemath等着你

给我留言

留言无头像?


×