Numpy基本語法示例①

Numpy作為機器學習的基礎,今天我們來看看它的基本應用。

矩陣的創建

  1. 方法一:自定義矩陣

import numpy as nparray1 = np.array([[1,2,3],[4,5,6],[7,8,9]])

這樣創建了我們自己需要的3行3列的矩陣,array1是可以隨意改動的矩陣名字,調用np.array()創建矩陣。

注意:要用[ ]把我們創建的矩陣括起來,[[1,2,3],[4,5,6],[7,8,9]],否則報錯,不是一個完整的矩陣了哦。

2.方法二:有規律的矩陣

import numpy as nparray1 = np.arange(10212).reshape(2,3)print (array1)

結果:

[[10 12] [14 16] [18 20]]

arange()函數的作用是生成規律性的矩陣,arange(10,21,2)生成從10到20(注意不是到21)間隔為2的數列。通過reshape(2,3)將其定義為2行3列的矩陣。

3.全0全1矩陣:

array1= np.zeros((2,3)) #創建2行3列的全零矩陣#結果如下:[[ 0. 0. 0.] [ 0. 0. 0.]]array2 = np.ones((2,3)) #創建2行3列的全一矩陣##結果如下:[[ 1. 1. 1.] [ 1. 1. 1.]]

4.空矩陣:

array2 = np.empty((2,3))#結果如下:[[ 9.50110805e-312 9.11299088e-315 9.11299546e-315] [ 9.13148561e-315 3.11523242e-307 4.88364599e-309]]

注意:empty矩陣並非是一個空的,它的裡面會被填上隨機的數字

5.線段矩陣linspace:

如前面所說,我們創建有規律矩陣,需要我們自己設定步長,比較麻煩,如果我們已經知道長度,並且想將數據分成幾段,我們就可以調用linspace函數。

array = np.linspace(1,20,10).reshape(2,5)print (array)#結果如下:[[ 1. 3.11111111 5.22222222 7.33333333 9.44444444] [ 11.55555556 13.66666667 15.77777778 17.88888889 20. ]]

注意:linspace(1,20,10)表示1到20的長度,這裡可以包括20,我們將它分成10段。

linspace()函數在畫圖中也發揮著很大的作用,比如我們作sinx的圖像,可以用它來分布散點

import numpy as npfrom numpy import pix = np.linspace(-pi,pi,100)f = np.sin(x)

6.隨機矩陣

import numpy as npx = np.random.random((2,2))print(x)#結果:[[ 0.16575165 0.23873948] [ 0.94929298 0.38900744]]

值得注意的是,random函數有雙層括弧,我們只需給出幾行幾列即可,他就可以生成(0,1)的隨機矩陣。

基本屬性

以上關於矩陣的基本創建已經講完了,下面來講一下numpy中的基本屬性。

import numpy as npimport numpy as npx = np.arange(1,13,dtype=np.int64).reshape(3,4)print (x)print (x.ndim) #求矩陣的維度print (x.shape) #求矩陣的行列數print (x.dtype) #數值類型print (x.size) #矩陣共含有多少個數值print (x.itemsize) #每個元素所佔空間大小print (x.T) #矩陣進行轉置#運行結果:[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]2(3, 4)int64128[[ 1 5 9] [ 2 6 10] [ 3 7 11] [ 4 8 12]]

在第二行語句中的dtype = np.int64 我們定義了矩陣裡面所有的數都是64位的int值,可以根據需要進行更改,如果我們要保留精度,可以使用float64,同時如果需要節省空間,可以用float8.同樣我們也可以定義複數形式dtype = complex

基本運算:

加減運算很簡單,只需注意行列要相同才能運算。

矩陣的次方運算稍有不同

import numpy as npx = np.arange(1,17,dtype=np.int64).reshape(4,4)print(x)print()c =x**2print(c)#結果:[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12] [13 14 15 16]][[ 1 4 9 16] [ 25 36 49 64] [ 81 100 121 144] [169 196 225 256]]

我們用x**2表示x的平方,x**3表示x的立方,以此類推。

矩陣的乘法

分為兩類:一類是元素逐個相乘,一個是矩陣作為整體相乘

import numpy as npx = np.arange(0,4).reshape(2,2)y = np.arange(2,6).reshape(2,2)print(x)print()print(y)c =x * y #單個元素都相乘d = np.dot(x,y)#或者 x.dot(y) 矩陣作為整體相乘print()print(c)print()print(d)#結果:[[0 1] [2 3]][[2 3] [4 5]][[ 0 3] [ 8 15]][[ 4 5] [16 21]]

邏輯運算

import numpy as npx = np.arange(0,4).reshape(2,2)y = x>2print(y)#結果:[[False False] [False True]]

返回的結果仍然是一個矩陣,滿足的是True,否則為False。

求和,最大值,最小值

import numpy as npx = np.arange(12).reshape(3,4)print(x)print(x.sum()) #求矩陣內所有元素和print(x.max()) #求矩陣內所有元素中的最大值print(x.min()) #求矩陣內所有元素中的最小值print(x.sum(axis = 0)) ##求矩陣每列元素和print(x.sum(axis = 1)) ##求矩陣每行元素和#結果:[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]66110[12 15 18 21][ 6 22 38]

注意:axi = 0表示對列進行操作,axi =1表示對行進行操作。


推薦閱讀:

TF Boys (TensorFlow Boys ) 養成記(二): TensorFlow 數據讀取
SSD-Tensorflow:3 步運行 TensorFlow 單圖片多盒目標檢測器
TensorFlow 實現最簡單的 RNN
乾貨 | TensorFlow的55個經典案例
使用Tensorflow做Kaggle入門題之數字識別

TAG:機器學習 | numpy | TensorFlow |