Python之Numpy庫(4)

1、arange()方法

a = np.arange(10, 30, 5)
print(a)

#運行結果:
[10 15 20 25]

類似於python中的range()方法,取10-30(不包含30)中的數字,以5作爲間隔。

a = np.arange(20)
print(a.reshape(4, 5))

#運行結果:
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]

對於arange()產生的數組,我們也可以用reshape()方法,得到矩陣。

2、np.random隨機模塊

a = np.random.random((2, 3))
print(a)

#運行結果:
[[0.21978978 0.25814437 0.53806867]
 [0.7482159  0.25421237 0.29024159]]

在random模塊下調取了random函數,傳入元組(2, 3),返回一個2行3列的矩陣。

需要注意的是,需寫成random.random,且傳入的爲元組。

講道理,生成的隨機數應該是有正有負,然鵝我試了很多次都沒有出現負數……

3、linespace()函數

from numpy import pi
a = np.linspace(0, 2*pi, 20) #0-2pi間的數平均分爲20份
print(a)

#運行結果:
[0.         0.33069396 0.66138793 0.99208189 1.32277585 1.65346982
 1.98416378 2.31485774 2.64555171 2.97624567 3.30693964 3.6376336
 3.96832756 4.29902153 4.62971549 4.96040945 5.29110342 5.62179738
 5.95249134 6.28318531]

使用linespace()函數在0到2pi之間得到2個數,這些數字的間隔是平均取的。

4、對np.array()的一些數學運算

首先,我們先生成2組數組:

a = np.array([20, 30, 40, 50])
b = np.arange(4)
print(a)
print(b)

#運行結果:
[20 30 40 50]
[0 1 2 3]

接下來,我們來做一些數學運算:

c = a - b
print(c)

#運行結果:
[20 29 38 47]

可以看出來,a和b進行了對應位置的相減。

我們繼續操作一下:

c = a - b
c = c - 1
print(c)

#運行結果:
[19 28 37 46]

不難看出,c中的每一個元素都減1了。

我們再來試試平方的運算:

a = np.array([20, 30, 40, 50])
b = np.arange(4)
c = b ** 2
print(c)

#運行結果:
[0 1 4 9]

再試試布爾值:

a = np.array([20, 30, 40, 50])
b = np.arange(4)
print(a < 35)

#運行結果:
[ True  True False False]

下面試試矩陣的*乘法:

A = np.array([[1, 1], [0, 1]])
B = np.array([[2, 0], [3, 4]])
print(A)
print('-------')
print(B)

#運行結果:
[[1 1]
 [0 1]]
-------
[[2 0]
 [3 4]]

OK,我們得到了A和B兩個矩陣,接下來進行*乘法運算:

print(A*B)

#運行結果:
[[2 0]
 [0 4]]

好吧,怎麼得到的呢?

其實是採用對應位置進行相乘,1*2=2, 1*0=0, 0*3=0,1*4=4,因此得到的是上述結果。

接下來,試一下.dot()操作

print(A.dot(B))

#運行結果:
[[5 4]
 [3 4]]

.dot()方法採用的是第一行乘第一列然後進行相加,比如1*2 + 1*3 = 5,然後第一行乘以第二列再相加,如1*0 + 1*4 = 4,然後第二行乘以第一列後相加,即 0*2 + 1*3 = 3,最後第二行乘以第二列再相加,0*0 + 1*4 = 4。

此外,.dot()操作也可以寫作np.dot(A,B),結果一樣:

A = np.array([[1, 1], [0, 1]])
B = np.array([[2, 0], [3, 4]])
print(np.dot(A, B))

#運行結果:
[[5 4]
 [3 4]]

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章