學python第二天的筆記
阿新 • • 發佈:2019-02-19
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的
N(3,6.25)的正態分佈:
8. 陣列的切割 9. 如果b=a的陣列的一部分,那麼如果b改變,a的那一對應部分也會隨之改變。 如果要防止上述情況應該用copy() 比方說
10. 矩陣的* 星號*代表兩個矩陣對應元素的乘積,並不是矩陣相乘 矩陣相乘還是用np.dot(a,b) 11. np.linspace() 通過指定開始值、終值、元素個數來建立一維陣列,並通過endpoint關鍵字指定是否包含終值
13. 大多數情況下numpy函式比類似的函式快好多的。 14. 一些常用的數學函式: np.log np.maximum np.sin np.exp np.abs
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. 確定數字的矩陣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]])
7. 數組裡面填隨機數: np.random.rand(rows,volomns) //0-1的隨機數 np.random.randn(rows,volomns) //高斯分佈 N(μ,σ^2) μ=0,σ=1 示例: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.])
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: |