小白的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語句預設的會在後面加上換行加了逗號之後換行就變成了空格
本文部分參考以下部落格: