import numpy as np
# 陣列
a = [[1, 2, 3], [4, 5, 6]]
print("a:", a)
# 矩陣
b = np.array(a)
print("b:", b)
執行後輸出為:
a: [[1, 2, 3], [4, 5, 6]]
b: [[1 2 3]
[4 5 6]]
我們可以看到python中的陣列和numpy中的陣列在螢幕上輸出的一些細微的差異:
numpy中的陣列輸出中是按照行列排列的,並且元素之後是沒有逗號分隔的,這樣在螢幕輸出上我們就能很容易看矩陣,跟數學中矩陣的書寫格式比較接近。
我們也可以在建立numpy陣列時通過設定dtype來指定陣列中元素的型別,例如:
import numpy as np
# python陣列
a = [[1, 2, 3], [4, 5, 6]]
print("a:", a)
# numpy陣列
b = np.array(a, dtype=np.float)
print("b:", b)
上面我們就定義了numpy陣列元素的型別為float型別,其輸出為:
a: [[1, 2, 3], [4, 5, 6]]
b: [[ 1. 2. 3.]
[ 4. 5. 6.]]
在機器學習中,一般我們定義的元素型別為浮點型別np.float和整型np.int。
想要輸出3行4列全部為0的numpy二維陣列:
import numpy as np
a = np.zeros((3,4))
print(a)
輸出為:
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
我們也經常會用到全1的陣列:
import numpy as np
a = np.ones((3, 4), dtype=np.float)
print(a)
輸出為:
[[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]]
有人可能會注意到定義幾行幾列的方法,例如(3, 4),這個是python中的元組型別,本質上就是乙個陣列,但跟陣列不一樣的地方是其值是唯讀的,也就是不可改變元組中元素的值。
import numpy as np
a = np.empty((3, 4), np.float)
print(a)
輸出為:
[[ 6.23042070e-307 3.56043053e-307 1.37961641e-306 2.22518251e-306]
[ 1.33511969e-306 1.24610383e-306 1.69118108e-306 8.06632139e-308]
[ 1.20160711e-306 1.69119330e-306 1.29062229e-306 1.29060531e-306]]
np.empty()用於生成接近於0的隨機數陣列。
例如:生成乙個從10開始到20結束(不包括結束值),步長為2的數列:
import numpy as np
a = np.arange(10, 20, 2)
print(a)
輸出為:
[10 12 14 16 18]
np.arange()還是經常會用到的,看到這個函式,使我聯想起python中的range函式,這兩者的功能類似,先看個例子:
import numpy as np
# python中建立range物件,然後我們把它轉換成list物件並列印出來
a = range(10, 20, 2)
print("python中的range物件:", list(a))
# numpy中的arange函式跟python中的range物件類似
b = np.arange(10, 20, 2)
print("numpy中的arange:", b)
輸出為:
python中的range物件: [10, 12, 14, 16, 18]
numpy中的arange: [10 12 14 16 18]
這裡arange可以記憶為array中的range函式。
numpy陣列的形狀非常重要,也就是幾行幾列。
在進行陣列/矩陣運算中要時刻關注陣列/矩陣是什麼樣的形狀,比如陣列/矩陣的加法、陣列/矩陣的叉乘中對其形狀都有相應較嚴格的規定。
有時為了能夠改變陣列/矩陣的形狀,就需要呼叫np.reshape()的函式。
例如:
import numpy as np
a = np.arange(12).reshape(3, 4)
print(a)
輸出為:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
import numpy as np
a = np.linspace(1, 10, 20)
print(a)
輸出為:
[ 1. 1.47368421 1.94736842 2.42105263 2.89473684
3.36842105 3.84210526 4.31578947 4.78947368 5.26315789
5.73684211 6.21052632 6.68421053 7.15789474 7.63157895
8.10526316 8.57894737 9.05263158 9.52631579 10. ]
上述語句生成了從1開始到10,總共有20個數等距的數列。
你可以把它們想象成起始是1,終止是10,總共有20個等距點。
numpy的array合併 老魚學numpy
本節主要講述如何把兩個陣列按照行或列進行合併。例如 import numpy as np a np.array 1,1,1 b np.array 2,2,2 print np.vstack a,b 合併後輸出結果為 1 1 1 2 2 2 import numpy as np a np.array ...
numpy的索引 老魚學numpy
import numpy as np a np.arange 3,15 reshape 3,4 print a print a print 第2行的資料 a 2 print 第2行第3列的資料 a 2 3 輸出為 a 3 4 5 6 7 8 9 10 11 12 13 14 第2行的資料 11 12...
numpy array分割 老魚學numpy
有合併,就有分割。本節主要講述如何通過numpy對陣列進行橫向 縱向分割。首先建立乙個6行4列的陣列,然後我們對此陣列按照橫向進行切割,分成3塊,這樣每塊應該有2行,見例子 import numpy as np a np.arange 24 reshape 6,4 print a print a p...