찾다
백엔드 개발파이썬 튜토리얼如何用 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))

你们都不知道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

用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.

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
파이썬 : 편집과 해석에 대한 깊은 다이빙파이썬 : 편집과 해석에 대한 깊은 다이빙May 12, 2025 am 12:14 AM

Pythonusesahybridmodelofilationandlostretation : 1) ThePyThoninterPretreCeterCompileSsourcodeIntOplatform-IndependentBecode.

Python은 해석 된 또는 편집 된 언어입니까? 왜 중요한가?Python은 해석 된 또는 편집 된 언어입니까? 왜 중요한가?May 12, 2025 am 12:09 AM

Pythonisbothingretedandcompiled.1) 1) it 'scompiledtobytecodeforportabilityacrossplatforms.2) thebytecodeisthentenningreted, withfordiNamictyTeNgreted, WhithItmayBowerShiledlanguges.

루프 대 파이썬의 루프 : 주요 차이점 설명루프 대 파이썬의 루프 : 주요 차이점 설명May 12, 2025 am 12:08 AM

forloopsareideal when

루프를위한 것 및 기간 : 실용 가이드루프를위한 것 및 기간 : 실용 가이드May 12, 2025 am 12:07 AM

forloopsareusedwhendumberofitessiskNowninadvance, whilewhiloopsareusedwhentheationsdepernationsorarrays.2) whiloopsureatableforscenarioScontiLaspecOndCond

파이썬 : 진정으로 해석 되었습니까? 신화를 파악합니다파이썬 : 진정으로 해석 되었습니까? 신화를 파악합니다May 12, 2025 am 12:05 AM

pythonisnotpurelynlogreted; itusesahybrideprophorfbyodecodecompilationandruntime -INGRETATION.1) pythoncompilessourcecodeintobytecode, thepythonVirtualMachine (pvm)

동일한 요소를 가진 Python Concatenate 목록동일한 요소를 가진 Python Concatenate 목록May 11, 2025 am 12:08 AM

ToconcatenatelistsinpythonwithesameElements, 사용 : 1) OperatorTokeEpduplicates, 2) asettoremovedUplicates, or3) listComperensionForControlOverDuplicates, 각 methodHasDifferentPerferformanCeanDorderImpestications.

해석 대 컴파일 언어 : Python 's Place해석 대 컴파일 언어 : Python 's PlaceMay 11, 2025 am 12:07 AM

PythonisancerpretedLanguage, 비판적 요소를 제시하는 PytherfaceLockelimitationsIncriticalApplications.1) 해석 된 언어와 같은 thePeedBackandbackandrapidProtoTyping.2) CompilledlanguagesLikec/C transformt 해석

루프를 위해 및 while 루프 : 파이썬에서 언제 각각을 사용합니까?루프를 위해 및 while 루프 : 파이썬에서 언제 각각을 사용합니까?May 11, 2025 am 12:05 AM

useforloopswhhenmerfiterationsiskNownInAdvance 및 WhileLoopSweHeniTesslationsDepoyConditionismet whilEroopsSuitsCenarioswhereTheLoopScenarioswhereTheLoopScenarioswhereTheLoopScenarioswhereTherInatismet, 유용한 광고 인 푸트 gorit

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구