# Jean-Baptiste Juin # Astronomy Python course # Practice 2 #------------------------ #------------------------ # Title: Numpy ndim-arrays #------------------------ #------------------------ # if not in ipython: # from numpy import * #------------------------ # Creating array #------------------------ # From scratch t=arange(0.0,10.0,10.0/20.0) z=zeros(5) m=rand(5,6) # From lists Values=[[2,4,5],[3,-6,9]] print Values v=array(Values) print v #------------------------ # Accessing by index #------------------------ print v[0,0] print m[3,5] print t print t[1] print t[-1] t[-1]=-33 print t #------------------------ # Slicing #------------------------ # 1D t2=t[0:5] print t print t2 # 2D m2=m[1:3,1:4] print m print m2 m2[0,0]=-33 print m2 print m # Array are not copied when slicing: link m3=m[1:3,-2:-1] print m3 #------------------------ # Some methods #------------------------ m=rand(2,3) # Shape and size print m print m.size print m.shape print m.flatten() print m.reshape(6,1) print m.reshape(1,6) # Minimum/Maximum print m print m.min(),m.max() # Some statistics print m.mean(),m.var() # Sorting v=rand(10) print v v.sort() print v # Getting sub array index=numpy.where(v > 0.5) print index print v[index] #------------------------ # I/O to ASCII #------------------------ v1=arange(0,6) v2=arange(1,7) # Writing # Using scipy.io io.write_array("./Test.scipy-io.txt",m,separator=' ') io.write_array("./Test.scipy-io.csv",m,separator=',') # Using matplotlib pylab.save("./Test.pylab.txt",m,fmt='%5.2f') pylab.save("./Test2.pylab.txt",(v1,v2),fmt='%5.2f') # Using numpy tofile method v1.tofile("./Test.numpy-tofile.txt",sep=' ', format = "%5.2f") # Reading # Using scipy.io data=io.read_array("./Test.scipy-io.txt") print data # Using matplotlib data=pylab.load("./Test2.pylab.txt") print data # Reading a CSV file (SDSS public data for instance) # Using matplotlib data = pylab.load("./Test.scipy-io.csv",delimiter=',',skiprows=1) #------------------------ # I/O to fits format #------------------------ # Using pyfits import pyfits # Writing pyfits.writeto("./Test.fits",m) # Reading data=pyfits.getdata("./Test.fits") # Getting the header header=pyfits.getheader("./Test.fits") print header print header['NAXIS'] print header['NAXIS1']