【Python載入數據】 python極簡教程

【Python載入數據】python極簡教程

python是一種不一定簡潔、但非常明了的語言,可讀性強,雖然依賴的程序包有時候比較多。就天文數據的處理而言,python是非常合適的。之前已經寫過一些python相關的博文(http://blog.sciencenet.cn/blog-117333-679285.htmlhttp://blog.sciencenet.cn/blog-117333-679464.htmlhttp://blog.sciencenet.cn/blog-117333-684226.htmlblog.sciencenet.cn/blog-117333-694969.htmlhttp://blog.sciencenet.cn/home.php?mod=space&uid=117333&do=blog&id=695303http://blog.sciencenet.cn/blog-117333-573394.htmlhttp://blog.sciencenet.cn/blog-117333-574518.htmlhttp://blog.sciencenet.cn/blog-117333-574767.html)。和之前IDL的博文一樣,這篇博文的目的也是起到總結的作用,以后不怎么會開新帖了。

python的各個版本可以在這里找到,http://www.python.org/download/releases/。更多python的程序包可以在一個非官方的python程序庫網站http://www.lfd.uci.edu/~gohlke/pythonlibs/找到。python畫圖程序包matplotlib的相關內容可以參見http://matplotlib.org/。下面總結一些數據處理中經常用到的python命令。

注意:縮進在python里是有意義的,所以寫代碼的時候不能隨便空格,要注意對齊。

1. 讀取各種格式的文件

(1)FITS

>>> import pyfits

>>> hdulist = pyfits.open('xxx.fits') ? # 讀頭文件及數據,hdulist是一個結構體

>>> image = hdulist[0].data ? ? ? ? ? ?# 分離出數據

>>> nx = hdulist[0].header['naxis1'] # 讀取頭文件中相應的參數值

(2)文本文件

>>> import numpy as np

>>> ra,dec,major,minor,angle = np.loadtxt('catalog.txt',unpack=True,usecols=[16,17,18,19,20]) # unpack=True 表明對結果進行轉置,使得ra,dec,major=...的格式是合法的

2. 定義數組

(1)定義一個未賦值數組

>>> import numpy as np

>>> a=np.array(10)

(2)定義一個所有元素為0的數組

>>> import numpy as np

>>> a=np.zeros(10)

>>> b=np.zeros((2,5))

(3)定義一個所有元素為1的數組

>>> import numpy as np

>>> a=np.ones(10)

>>> b=np.ones((2,5))

(4)定義一個指標數組

>>> import numpy as np

>>> a=np.arange(1,11,1)

>>> b=np.arange(1,11,1).reshape(2,5)

3. 計算

(1)傅里葉變換

>>> import numpy as np

>>> a=np.ones(100)

>>> b=np.fft.fftn(a)

>>> c=np.fft.ifftn(b).real

4. 畫圖

(1)積分強度圖

# in intensity_map.py:

import pyfits

import numpy as np

import matplotlib.pyplot as plt

hdulist = pyfits.open('xxx.fits')

image = hdulist[0].data

nz = hdulist[0].header['naxis3']

for i in range(0,nz):

Z = Z+image[i,:,:]

ax = plt.subplot(111)

im = plt.imshow(Z, cmap=cm.gist_yarg,

origin='lower', aspect='equal',

extent=[max(x),min(x),min(y),max(y)])

plt.show()

(2)簡單曲線圖

# in simple_plot.py:

from pylab import *

t=arange(0.0, 2.0, 0.01)

s=sin(2*pi*t)

plot(t,s)

xlabel('time (s)')

ylabel('voltage (mV)')

savefig("test.eps")

show()

5. 查看幫助

>>> help(np.array) #查看np.array函數的定義和用法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容