1. 程式人生 > >小白的python機器學習路(關於程式碼中逗號的使用以及ZIP函式和矩陣合併函式的使用)

小白的python機器學習路(關於程式碼中逗號的使用以及ZIP函式和矩陣合併函式的使用)

由於本系列是自學過程中的隨筆,所以更新時間不固定且風格隨意散漫,各位看官見諒,只要能有所幫助就好!~

首先是ZIP函式的解釋,ZIP函式用於多個矩陣的合併

Zip函式會將兩個矩陣對應元素組成一個元組,而各元組又作為最後形成的列表的元素

因此需要進行進一步矩陣運算時,需要將列表再轉換成矩陣的形式

程式碼如下:

x1=np.array([1,2,3,1,5,6,5,5,6,7,8,9,7,9])

x2=np.array([1,3,2,2,8,6,7,6,7,1,2,1,1,3])

x=np.array(zip(x1,x2)).reshape(len(x1),2)

在此再介紹幾個其他的矩陣合併函式:

1、numpy下的concatenate函式

np.concatenate((A,B),axis=1)    可以得到一個形如[A  B]的矩陣

而axis=0時,可以得到一個行為A+B行列為A列的矩陣(這裡用mathtype打出來的公式顯示不出來……各位理解什麼意思就好)

2、

numpy下的vstack和hstack函式

>>> a =np.ones((2,2))

>>> b =np.eye(2)

>>>print np.vstack((a,b))

[[ 1.  1.]

 [ 1. 1.]

 [ 1. 0.]

 [ 0. 1.]]

>>>print np.hstack((a,b))

[[ 1.  1. 1.  0.]

 [ 1. 1.  0.  1.]]

這兩個函式是深拷貝,即

>>> c =np.hstack((a,b))

>>>print c

[[ 1.  1. 1.  0.]

 [ 1. 1.  0.  1.]]

>>>a[1,1] = 5

>>>b[1,1] = 5

>>>print c

[[ 1.  1. 1.  0.]

 [ 1. 1.  0.  1.]]

改變a,b中的值並無法改變c中的元素值

關於深拷貝的概念可以參考網上的內容

**************************************************************************************

然後是關於python程式設計中逗號的使用

首先來看一下程式設計中遇到的情況


一開始不理解這裡plt1,中逗號的意義在哪裡,但確實這個逗號在這裡起到的很大的作用,我在此處又設了一個同樣的plt2然後輸出兩者的類別屬性進行比較,結果如下:


可以看到有沒有逗號會影響變數屬性

通過查找了解到plot函式返回的是一個線的列表,當只有一條直線時,結果是一個長度為1的列表,通過新增逗號可以得到列表的第一個元素。且此用法只有列表元素數為1時才可以使用。

此外,還在網路上得到了其他有關逗號的簡單使用方法。

一、首先逗號可以用於表示一個變數型別為元組型別


執行結果為


二、逗號在輸出語句print中的使用:

例子:

      >>> for i inrange(0,5):
...     print i
...
0
1
2
3
4
>>> for i in range(0,5):
...     print i,
...
0 1 2 3 4

很明顯 print語句預設的會在後面加上換行加了逗號之後換行就變成了空格

本文部分參考以下部落格: