1. 程式人生 > >學python第二天的筆記

學python第二天的筆記

1. 2.多維陣列 a = np.array([[1,2,3],[4,5,6]])   注意有兩個中括號 a.shape    →     (2,3)  行列數量 a.ndim     →    2     維數 a.size     →     6     總元素的數量 3改變陣列行列數 b = a.reshape((rows,columns))  //賦給b a.shape((rows,volumns))     //只改變a的
a = np.arange(0,20,1)

a
Out[29]: 
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19])

b = a.reshape((4,5))

b
Out[31]: 
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

c = a.reshape((20,1))

c
Out[33]: 
array([[ 0],
       [ 1],
       [ 2],
       [ 3],
       [ 4],
       [ 5],
       [ 6],
       [ 7],
       [ 8],
       [ 9],
       [10],
       [11],
       [12],
       [13],
       [14],
       [15],
       [16],
       [17],
       [18],
       [19]])

d = a.reshape((-1,4))

d
Out[35]: 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19]])
4. 矩陣置換 b = np.transpose(a) a.transpose() 發現一個有趣的現象,一位矩陣是不會轉置的,比方說a = np.array([1,2,3,4,5]) 需要手動改a.shape=(1,5)方可轉置 5. 矩陣相乘 np.dot(a,b) 6. 確定數字的矩陣
np.zeros((2,2),complex)
Out[75]: 
array([[ 0.+0.j,  0.+0.j],
       [ 0.+0.j,  0.+0.j]])

np.ones((2,3))
Out[76]: 
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])

np.zeros(5)
Out[77]: array([ 0.,  0.,  0.,  0.,  0.])
7. 數組裡面填隨機數: np.random.rand(rows,volomns)  //0-1的隨機數 np.random.randn(rows,volomns)   //高斯分佈 N(μ,σ^2)   μ=0,σ=1 示例:
np.random.rand(3,4)
Out[79]: 
array([[ 0.6803578 ,  0.76155135,  0.03897627,  0.61562348],
       [ 0.6957188 ,  0.2807298 ,  0.88765095,  0.62304455],
       [ 0.86120959,  0.55513623,  0.58311919,  0.58792122]])

np.random.randn(2,3)
Out[80]: 
array([[ 0.05768397, -0.86026768, -0.61482137],
       [ 1.87613329,  1.61983935,  0.27062215]])

N(3,6.25)的正態分佈:
2.5*np.random.randn(3,4)+3
Out[82]: 
array([[ 1.02386886,  0.73984937,  5.80983114,  0.73075549],
       [ 4.00412737,  2.78826463,  4.06054177,  1.97553384],
       [ 4.84312671,  6.02957516,  6.74691935,  2.04129841]])

8. 陣列的切割 9. 如果b=a的陣列的一部分,那麼如果b改變,a的那一對應部分也會隨之改變。 如果要防止上述情況應該用copy() 比方說
a=np.arange(5);a
Out[131]: array([0, 1, 2, 3, 4])

b=a[2:].copy();b
Out[132]: array([2, 3, 4])

b[0]=100

b
Out[134]: array([100,   3,   4])

a
Out[135]: array([0, 1, 2, 3, 4])

10. 矩陣的* 星號*代表兩個矩陣對應元素的乘積,並不是矩陣相乘 矩陣相乘還是用np.dot(a,b) 11. np.linspace() 通過指定開始值、終值、元素個數來建立一維陣列,並通過endpoint關鍵字指定是否包含終值
a = np.linspace(0,1,12)

a
Out[148]: 
array([ 0.        ,  0.09090909,  0.18181818,  0.27272727,  0.36363636,
        0.45454545,  0.54545455,  0.63636364,  0.72727273,  0.81818182,
        0.90909091,  1.        ])
12. savetxt 與loadtxt
np.savetxt("myfile.txt",a)

a
Out[22]: 
array([ 0.        ,  0.09090909,  0.18181818,  0.27272727,  0.36363636,
        0.45454545,  0.54545455,  0.63636364,  0.72727273,  0.81818182,
        0.90909091,  1.        ])

table = np.loadtxt("myfile.txt")

table
Out[24]: 
array([ 0.        ,  0.09090909,  0.18181818,  0.27272727,  0.36363636,
        0.45454545,  0.54545455,  0.63636364,  0.72727273,  0.81818182,
        0.90909091,  1.        ])

13. 大多數情況下numpy函式比類似的函式快好多的。 14. 一些常用的數學函式: np.log np.maximum np.sin np.exp np.abs
y = x1 + x2: add(x1, x2 [, y])
y = x1 - x2: subtract(x1, x2 [, y])
y = x1 * x2: multiply (x1, x2 [, y])
y = x1 / x2: divide (x1, x2 [, y]), 如果兩個陣列的元素為整數,那麼用整數除法
y = x1 / x2: true divide (x1, x2 [, y]), 總是返回精確的商
y = x1 // x2: floor divide (x1, x2 [, y]), 總是對返回值取整
y = -x: negative(x [,y])
y = x1**x2:
y = x1 % x2: