import time
import math
import numpy as np
x = [i * 0.001 for i in xrange(1000000)] # 初始化数组0.000~999.999
start = time.clock()
for i, t in enumerate(x): # 用循环计算正弦值
x[i] = math.sin(t)
print "math.sin:", time.clock() - start
x = [i * 0.001 for i in xrange(1000000)]
x = np.array(x) # 初始化矩阵(这里是一维)
start = time.clock()
np.sin(x,x) # numpy的广播计算(代替循环)
print "numpy.sin:", time.clock() - start
# 输出
# math.sin: 1.15426932753
# numpy.sin: 0.0882399858083
Python 科学計算で行列置換ループを使用するにはどうすればよいですか? -PHP中国語サイトQ&A-Python科学計算で行列置換ループを使うには? -PHP中国語サイトQ&A
ぜひ見て学んでください。
比如求一个平面稳态导热问题,控制方程就是拉普拉斯方程:
(我才发现原来有[插入公式]这个功能)
按照最简单的毅种循环来写就是:
虽然能用的运算没多少吧但是对大矩阵的整体运算还是很快的←_← 最近正好在学numpy这个模块。题主可以看看这个教程,不是很全,但是科学计算方面还是有不少东西的:NumPy-快速处理数据
引用教程中的代码:
用numpy, Cython, 或者 weave
Speed up Python
SciPy官网有关于如何提高Python Performance的教程
PerformancePython
用Pyrex/Cython或者weave基本上可以达到C++的速度。
Laplace的例子,500*500矩阵,100次循环。