Presentation is loading. Please wait.

Presentation is loading. Please wait.

Computation for Physics 計算物理概論

Similar presentations


Presentation on theme: "Computation for Physics 計算物理概論"— Presentation transcript:

1 Computation for Physics 計算物理概論
Introduction to NumPy and SciPy

2 List v.s. Array (numpy package)
Variable length, you can add or remove elements. Elements can be of different types. Flexible. Array The number of elements is fixed. The elements must be of the same type. Behave roughly like vectors and matrices. Faster.

3 1D Array >>>from numpy import zeros >>>a = zeros(4, float) >>>print(a) [ ] >>>a = zeros(5, float) [ ] >>>a = zeros(3,complex)

4 2D Array >>>a = zeros([3,4],float) >>>print(a) [[ ] [ ] [ ]]

5 Array Initialization in NumPy
zeros Create an array with all elements equal to zero. ones Create an array with all elements equal to one. empty Create an empty array. (Faster.) In practice the aren't empty. (Random stuff in the memory).

6 List  Array  List >>>r = [1.0, 1.5, -2.2] >>>a = array(r,float) >>>a = array([1.0, 1.5, -2.2], float) >>>print(a[0]) 1.0 >>>a = array([[1,2,3],[4,5,6]], int) >>>print(a) [[ 1 2 3] [ 4 5 6]] >>>r = list(a)

7 Accessing and Modifying Elements
>>>a = array([1.0, 1.5, -2.2], float) >>>a[0] 1.0 >>>a[2]=4 (4 will be converted into float) >>>a = array([[1,2,3],[4,5,6]], int) >>>a[0][1] 2 >>>a[0][1]=0 >>>print(a) [[ 1 0 3] [ 4 5 6]]

8 Reading a 1D Array from a File
values.txt >>>from numpy import loadtxt >>>a = loadtxt("values.txt", float) >>>print(a) [ ]

9 Reading a 2D Array from a File
values.txt >>>from numpy import loadtxt >>>a = loadtxt("values.txt", float) >>>print(a) [[ ] [ ] [ ]]

10 Arithmetic with Arrays
>>>a[0] = a[1] + 1 >>>x = a[2]**2 -2*a[3]/y >>>r = [1,2,3,4] >>>a = array(r, int) >>>s = 2*r >>>b = 2*a >>>print(s) [1,2,3,4,1,2,3,4] >>>print(b) [ ]

11 Add or Subtract Two Arrays
>>>a = array([1,2,3,4],int) >>>b = array([2,4,6,8],int) >>>print(a+b) [ ] >>>print(b-a) [ ] (Two arrays must have the same size) >>>>print(a+1)

12 Multiply Two Arrays ≠ Dot Product
>>>a = array([1,2,3,4],int) >>>b = array([2,4,6,8],int) >>>print(a*b) [ ] >>>print(b/a) [ ]

13 "Dot Product" of Two 1D Arrays="Inner Product"
>>>from numpy import array, dot >>>a = array([1,2,3,4],int) >>>b = array([2,4,5,8],int) >>>print(dot(a,b)) 60

14 "Dot Product" of Two 2D Arrays = "Matrix Product"
>>>a = array([[1,3],[2,4]],int) >>>b = array([[4,-2],[-3,1]],int) >>>c = array([[1,2],[2,1]],int) >>>print(dot(a,b)+2*c) [[-3 5] [ 0 2]] −2 − = −

15 Array Functions Most list functions can be applied to 1D array sum max
min len You can also apply math functions >>>a = array([1,2,3,4],float) >>>print(sin(a)) [ ]

16 Array Methods >>>a = array([1,2,3,4],float) >>>a.size 4 >>>a.shape (4,) >>>a = array([[1,2,3],[4,5,6],int) 6 (2,3)

17 Try: Average of a Set of Values in a File
A set of numbers stored in a file values.txt. We don't know how many numbers there are. Want to calculate their mean.

18 Mean and Mean-Square from numpy import loadtxt values = loadtxt("values.txt",float) mean = sum(values)/len(values) mean_sqr = sum(values*values)/len(values) print(mean) print(mean_sqr)

19 Geometric Mean from numpy import loadtxt,log,exp from math import log,exp values = loadtxt("values.txt",float) geometric=exp(sum(log(values))/len(values)) print(geometric) 𝑥 = 𝑖=1 𝑛 𝑥 𝑖 1/𝑛 → 𝑥 =𝑒𝑥𝑝 1 𝑛 𝑖=1 𝑛 𝑙𝑛 𝑥 𝑖

20 numpy.arange arange([start],stop[,step],dtype=None)
Return evenly spaced values within a given interval. Values are generated within the half-open interval [start, stop) (in other words, the interval including start but excluding stop). For integer arguments the function is equivalent to the Python built-in range function, but returns an ndarray rather than a list. When using a non-integer step, such as 0.1, the results will often not be consistent. It is better to use linspace for these cases. >>> np.arange(3) array([0, 1, 2]) >>> np.arange(3.0) array([ 0., 1., 2.]) >>> np.arange(3,7) array([3, 4, 5, 6]) >>> np.arange(3,7,2) array([3, 5])

21 numpy.linspace Return evenly spaced numbers over a specified interval.
Returns num evenly spaced samples, calculated over the interval [start, stop ]. The endpoint of the interval can optionally be excluded. >>>linspace(2.0, 3.0, num=5) array([ 2., 2.25, 2.5, 2.75, 3. ]) >>>linspace(2.0, 3.0, num=5, endpoint=False) array([ 2. , 2.2, 2.4, 2.6, 2.8]) >>>linspace(2.0, 3.0, num=5, retstep=True) (array([ 2. , 2.25, 2.5 , 2.75, 3. ]), 0.25)

22 numpy.random import numpy.random from numpy.random import random
numpy.random.random() from numpy.random import random random() from numpy.random import *

23 numpy.random seed([seed]) get_state() set_state(state)
random(size)=random_sample(size)=ranf([size])=sample([size]) Return random floats in the half-open interval [0.0, 1.0). randint(low,high=None,size=None) Return random integers from low (inclusive) to high (exclusive). choice(a[,size,replace,p]) shuffle(X) permutation(X)

24 Try: Random Number Input N. Generate N random numbers.
Output the mean and the standard deviation.


Download ppt "Computation for Physics 計算物理概論"

Similar presentations


Ads by Google