Python科學計算—numpy模塊總結(1)


      作為一個本科學數學專業,目前研究非線性物理領域的研究僧。用什么軟件進行純科學計算好,Fortran永遠是第一位的;matlab雖然很強大,可以很容易的處理大量的大矩陣,但是求解我們的模型(有時可能是幾萬個方程,而且需要演化很長時間才能到達穩態)使用matlab計算是很慢的。Python相對matlab來說,在速度上處於Fortran與matlab中間。

     Python處理科學計算只是它很小的一部分功能.python是交互式解釋語言,開源的,擁有大量的第三方模塊,可以跨平台,網頁爬蟲,數據挖掘,數據庫應用,多媒體應用,Web開發,電子游戲的應用等;對於我這個非計算機專業的,不打算讀博,未來想進入互聯網的學渣來說,學習python語言是一個很好的選擇。

# -*- coding: utf-8 -*-
"""
Created on Tue Nov 01 15:38:10 2016
科學計算,模塊numpy,
@author: whb
"""
import numpy 
"""
一維數組的建立,索引與切片
"""
a=numpy.arange(5)
arr=numpy.array([numpy.arange(4),numpy.arange(4)])
a=arange(5) #得到一個5個元素的數組;
b=a[1:]#得到第1個元素以后的元素
a[::-1]#反轉
"""
多維數組
"""
'建立'
#方法一
two_d_array=array([arange(5),4*arange(5)])
tree_d_array=array([[arange(5),4*arange(5)],[arange(5),4*arange(5)]])
#方法二:使用reshape()與arange()函數結合
two=arange(6).reshape(2,3)
tree=arange(18).reshape(2,3,3)
'操作(索引,復制,刪除,替換),展開'
two[:,1]#與matlab相同
two[:,1]=[3,5] #復制
tree[1,...] #得到第二層所有的元素
tree[1,1,:] #得到第二層的第二行的元素
tree[::-1]#將一層的元素與第二層的元素交換
d=tree.ravel() #ravel函數,只是展開,顯示。
tree_zk=tree.flatten() #flatten()函數會請求內存保留結果
"""
數組的組合:水平、垂直、深度組合。(vstack,dstack,hstack,column_stack,row_stack)這些函數都是以元組
作為參數
"""
A=arange(9).reshape(3,3)
B=2*A #2乘以A數組中的每一個元素
"水平組合"
A_B=hstack((A,B)) #(A,B)組成一個元組傳遞給函數hstack()
"垂直組合"
A_B_V=vstack((A,B))
"深度組合"
A_B_d=dstack((A,B))
"""
數組切割:split =hsplit,vsplit,dsplit;
"""
A_split=hsplit(A,3)
A_sp2=vsplit(A,3)
A.tolist() #轉為列表
"""
文件讀寫
"""
eye_1=numpy.eye(2) #創建一個單位矩陣2*2
i=range(17)
numpy.savetxt("w.txt",i)#保存一個數組
##方法二
f=open('f.txt','a') # w,r,a(寫入、讀取、追加)
for j in range(0,100):
    f.write(str(j)+'\n')   
f.close()
#讀取文件里的內容
#方法一
read_file=open('f.txt','r')
aa=read_file.read()   
##方法二loadtxt()函數
tttt=numpy.loadtxt('f.txt') #得到一個數組
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM