声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 8180|回复: 29

[Python] 用python做数值计算与数据可视化

  [复制链接]
发表于 2010-10-20 14:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
python的科学计算包可以说相当的强大,建议论坛也设置一个python的讨论区。这里给出一下经典的lorenz吸引子的一个图示效果和程序。
  1. # -*- coding: utf-8 -*-
  2. from scipy.integrate import odeint
  3. import numpy as np

  4. def lorenz(w, t, p, r, b):
  5.     # 给出位置矢量w,和三个参数p, r, b计算出
  6.     # dx/dt, dy/dt, dz/dt的值
  7.     x, y, z = w
  8.     # 直接与lorenz的计算公式对应
  9.     return np.array([p*(y-x), x*(r-z)-y, x*y-b*z])

  10. t = np.arange(0, 30, 0.01) # 创建时间点
  11. # 调用ode对lorenz进行求解, 用两个不同的初始值
  12. track1 = odeint(lorenz, (0.0, 1.00, 0.0), t, args=(10.0, 28.0, 3.0))
  13. track2 = odeint(lorenz, (0.0, 1.01, 0.0), t, args=(10.0, 28.0, 3.0))

  14. # 绘图
  15. from mpl_toolkits.mplot3d import Axes3D
  16. import matplotlib.pyplot as plt

  17. fig = plt.figure()
  18. ax = Axes3D(fig)
  19. ax.plot(track1[:,0], track1[:,1], track1[:,2])
  20. ax.plot(track2[:,0], track2[:,1], track2[:,2])
  21. plt.show()

复制代码

lorenz

lorenz

或者使用mayavi包:添加代码:
  1. mlab.plot3d(track1[:,0], track1[:,1], track1[:,2],color=(1,0,0), tube_radius=0.1)
复制代码
得到下面的效果:
无标题1.png

mayavi的可视化效果是非常好的,有兴趣的朋友可以去看看!
强烈推荐



评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2010-10-20 14:26 | 显示全部楼层
设置子版块应该是校董他们的权限吧,楼主可以先分享一些相关的内容,发起一些相关的讨论,先形成一些基础。
 楼主| 发表于 2010-10-20 14:45 | 显示全部楼层
好的谢谢
发表于 2010-10-20 17:00 | 显示全部楼层

如果具有一定基础的话,可以在本版先添加一个分类
具体是否需要,由版主来定夺,我负责具体操作
本站在版面的建设和发展方面给予版主最大的自由度
发表于 2010-10-20 17:23 | 显示全部楼层
本帖最后由 wqsong 于 2010-10-20 17:30 编辑

支持楼主,我也喜欢python,写出的代码给人高贵优雅的感觉。
最主要还是国内python用的人太少,翻译过来的好书一本都没有,XXX翻译(有待考证)那本《python核心编程》和原版比其他就不说了,排版上面就差一大截,据说还有沽名钓誉之嫌。
另外一方面专业代码更少。而fortran,C/C++,matlab代码多,大部分都改改直接就用了。
python结合scipy,numpy这几个模块可以和matlab小吼一下了。。。:lol
总之,支持推广python。。。
发表于 2010-10-20 18:29 | 显示全部楼层
回复 雪缘 的帖子

好的,如果需要的话,我会及时向校董申请的!
发表于 2010-10-20 18:30 | 显示全部楼层
回复 wqsong 的帖子

wqsong涉猎甚广啊,不像是工热系出身啊~
发表于 2010-10-20 19:10 | 显示全部楼层
回复 Rainyboy 的帖子



过奖了。。。凑热闹的。。。嘿嘿
调侃一下,可以加个板块叫:Post-modern Language(Python Perl Ruby and so on),单加Python块估计没几天还得加Perl,Ruby……
^_^
发表于 2010-10-20 19:14 | 显示全部楼层
回复 wqsong 的帖子

那兄台分享一些做过的东西或者转帖一些有益东西过来给大家看看呗,呵呵。
发表于 2010-10-20 20:13 | 显示全部楼层
回复 Rainyboy 的帖子

python真还没做过大项目,一般就是当脚本语言用了,处理处理数据,Python用在我手里被我毁了。
写过一个单线程搜索程序,没什么难度,但是仅8行,说明一下Python的强大。
  1. # -*- coding:utf-8 -*-
  2. import os
  3. def search(path,filename, L):
  4.         for fn in os.listdir(path):
  5.                 if os.path.isdir(path+'\\'+fn):
  6.                         search(path+'\\'+fn,filename, L)
  7.                 elif fn.lower() == filename.lower():
  8.                         L.append(path)
复制代码

评分

1

查看全部评分

发表于 2010-10-20 20:23 | 显示全部楼层
回复 wqsong 的帖子
  1. # -*- coding:utf-8 -*-
  2. import os     !类似于C#里的using,C/C++里的#include
  3. def search(path,filename, L):         !定义一个函数
  4.       for fn in os.listdir(path):            !for 命令类似于C#里面的foreach
  5.                if os.path.isdir(path+'\\'+fn):         !如果是目录
  6.                       search(path+'\\'+fn,filename, L)   !就递归
  7.               elif fn.lower() == filename.lower():      !如果不是目录,那就是文件了,就可以进行逐一比对了
  8.                       L.append(path)     !如果相等呢,就将路径存在L中
复制代码

是这意思么?
发表于 2010-10-20 20:33 | 显示全部楼层
回复 Rainyboy 的帖子

嗯嗯,嘿嘿
path,filename类型是字符串,L类型是列表。。。
发表于 2010-10-20 20:35 | 显示全部楼层
回复 wqsong 的帖子
path,filename类型是字符串,L类型是列表。。。

那为什么在声明中看不出他们的类型呢?
发表于 2010-10-20 20:53 | 显示全部楼层
回复 Rainyboy 的帖子

嗯嗯,Python是弱类型语言,在于如何调用,可以传递不同类型的参数在给同一个函数。
就像len函数:
  1. >>> s = "wqsong"
  2. >>> len(s)
  3. 6
  4. >>> L = [1, 2, 3]
  5. >>> len(L)
  6. 3
复制代码
可能也是体现多态的一种办法吧,就像C++中的泛型一样,但泛型是一个静态过程(编译期)的多态,虚函数才是运行时的多态。而Python却始终是运行时的多态(解释性语言本来就没编译期多态;@P,尽管Python可以编译),因为上面一段代码是分别调用了字符串类型和列表类型中的同名成员函数__len__()。。。
对Python的设计哲学不是很了解,说不对的地方大家指教。。。嘿嘿

评分

1

查看全部评分

发表于 2010-10-21 11:27 | 显示全部楼层
本帖最后由 wqsong 于 2010-10-21 13:05 编辑

没事再补充一些:
1、关于Python类型的强弱。
    有人说Python是强类型语言,也有人说Python是弱类型语言。
    认为强类型的原因是因为Python里面一旦定义就有具体的类型,不会有隐式转化。认为弱类型的是因为Python中对于类型定义没有强制的限制,可以重定向引用,有点类似C中的void *。

  1. >>> '1'+1

  2. Traceback (most recent call last):
  3.   File "<pyshell#21>", line 1, in <module>
  4.     '1'+1
  5. TypeError: cannot concatenate 'str' and 'int' objects
  6. >>> L = [1, 2, 3]
  7. >>> L
  8. [1, 2, 3]
  9. >>> L = 6
  10. >>> L
  11. 6
复制代码
个人认为“动”和“静”、“强”和“弱”是相对的,在于你怎么理解了。最后借用一句名言:Static typing where possible, dynamic typing when needed. (自己改一下加一句:Strong typing where possible, weak typing when needed.

2、关于Python的多态。Python的多态可以说是:形似泛型,神似虚拟。就像上面举的len()函数例子一样。从面向对象的角度看,可以说是“很”面向对象。无论是消息机制,还是对象的独立性,再或者是多态。。。
3、Python的FP功能也不错,尽管不是专门的FP语言。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-28 07:00 , Processed in 0.075093 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表