Maison développement back-end Tutoriel Python 如何用 Python 科学计算中的矩阵替代循环?

如何用 Python 科学计算中的矩阵替代循环?

Jun 06, 2016 pm 04:11 PM
python

比如求一个平面稳态导热问题,控制方程就是拉普拉斯方程:


 \nabla^{2}=0
(我才发现原来有[插入公式]这个功能)

按照最简单的毅种循环来写就是:

def laplace(u):
     nx, ny = u.shape
     for i in xrange(1,nx-1):
          for j in xrange(1, ny-1):
              u[i,j] = ((u[i+1, j] + u[i-1, j]) * dy2 +  (u[i, j+1] + u[i, j-1]) * dx2) / (2*(dx2+dy2))
Copier après la connexion

你们都不知道numexpr的么←_←
比numpy还黑的科技→_→

虽然能用的运算没多少吧但是对大矩阵的整体运算还是很快的←_← 最近正好在学numpy这个模块。题主可以看看这个教程,不是很全,但是科学计算方面还是有不少东西的:NumPy-快速处理数据
引用教程中的代码:

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
Copier après la connexion

用numpy, Cython, 或者 weave
Speed up Python
SciPy官网有关于如何提高Python Performance的教程
PerformancePython
用Pyrex/Cython或者weave基本上可以达到C++的速度。
Laplace的例子,500*500矩阵,100次循环。
numpy和pandas.DataFrame的矩阵运算可以广播,可以map。 第一个技巧是,用map和lambda表达式来生成你要的迭代参数,比如生成一个平方表:map(lambda x: x*x, xrange(100)),这是个黑科技,可以很快速的生成你需要的循环参数;
第二个技巧是,熟练使用矩阵掩膜(mask)来简化循环,比如把矩阵a中小于100的值都置零:a[a<100] = 0,比循环快很多;
第三个技巧是,多使用各种库,如numpy, scipy(signal库简直好顶赞),如果你做图像,opencv库是唯一的选择。
大致是这样,实际应用中更多的是前两个trick混合使用。 想要快,就内嵌C,Python是解释性语言,会比较慢。
有成熟的计算软件时用的C/C+++python的模式,核心算法和耗时最多的逻辑用C/C++,其他用python.

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Musée de deux points: Guide de localisation de Bungle Wasteland
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Musée de deux points: Guide de localisation de Bungle Wasteland
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment télécharger Deepseek Xiaomi Comment télécharger Deepseek Xiaomi Feb 19, 2025 pm 05:27 PM

Comment télécharger Deepseek Xiaomi

Quels sont les avantages et les inconvénients des modèles ? Quels sont les avantages et les inconvénients des modèles ? May 08, 2024 pm 03:51 PM

Quels sont les avantages et les inconvénients des modèles ?

Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs Jul 01, 2024 am 07:22 AM

Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs

Pour seulement 250$, le directeur technique de Hugging Face vous apprend étape par étape comment peaufiner Llama 3 Pour seulement 250$, le directeur technique de Hugging Face vous apprend étape par étape comment peaufiner Llama 3 May 06, 2024 pm 03:52 PM

Pour seulement 250$, le directeur technique de Hugging Face vous apprend étape par étape comment peaufiner Llama 3

Partagez plusieurs frameworks de projets open source .NET liés à l'IA et au LLM Partagez plusieurs frameworks de projets open source .NET liés à l'IA et au LLM May 06, 2024 pm 04:43 PM

Partagez plusieurs frameworks de projets open source .NET liés à l'IA et au LLM

Un guide complet sur le débogage et l'analyse des fonctions Golang Un guide complet sur le débogage et l'analyse des fonctions Golang May 06, 2024 pm 02:00 PM

Un guide complet sur le débogage et l'analyse des fonctions Golang

Comment lui demandez-vous Deepseek Comment lui demandez-vous Deepseek Feb 19, 2025 pm 04:42 PM

Comment lui demandez-vous Deepseek

Quel logiciel est NET40 ? Quel logiciel est NET40 ? May 10, 2024 am 01:12 AM

Quel logiciel est NET40 ?

See all articles