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]]