1. 程式人生 > >Python 《資料科學入門》 讀書筆記第四章 2018-8-2011:30開始

Python 《資料科學入門》 讀書筆記第四章 2018-8-2011:30開始

接著看這本書。。看到第三章的時候,腦闊又疼了。用的時候再說吧,而且R軟體功能很強大。蹦過去了。

接著到了第四章。我一想說第四章講的線性代數。。我特麼高等代數都學過還看這個幹嘛啊。

又到了第五章,將統計,我說真巧,我就是統計專業的。

又到了第六章,一看,哇概率論,他咋知道我的專業是概率論與數理統計。看了一會,算了,還是從第四章開始看吧。要不一會書都直接翻過去了。

不說加法。比較容易理解。除了列表和元組的加法是列表新增元素外,其他的加法都是數學加法。

乘法

暫時在我以前寫演算法過程中,經常用到的乘法有這幾種命令。

import numpy as np
a=...
b=...
#這種方式是對應元素相乘完再相加
np.dot(a,b)
#這種方式是對應元素相乘,如果再相加相當於dot函式
np.multiply(a,b)
np.dot(a,b)=sum(np.multiply())
#這種方式是直接乘
a*b

這三種方法。對於不同的資料結構有不同的使用特點。

list 格式

只能用dot函式與multiply函式

import numpy as np
a=[1,2,3]
b=[4,5,6]
np.dot(a,b)
np.multiply(a,b)
sum(np.multiply(a,b))    #發現這個值與dot值相同

如果直接使用a*b就會報錯

元組

其實在我的印象裡,元組基本上所有的性質和列表差不多。除了元組不能更改。就是說在列表中,你可以更改已經賦值過的值,但是元組不行。

陣列

在陣列中,可以用直接用乘法“*”

import numpy as np
a=np.array([1,2,3])
b=np.array([4,5,6])
#以下這兩個值是一樣的
a*b
np.multiply(a,b)
#這個就是正常的
np.dot(a,b)

矩陣

在矩陣中,必須要考慮維數的影響,比如a,b都是行向量,有的乘法就不能直接算

ipmort numpy as np
a=np.matrix([1,2,3])
b=np.matrix([4,5,6])

np.dot(a,b)    #出錯
np.dot(a,b.T)    #正確

np.multiply(a,b)     #常規正確
np.multiply(a,b.T)     #程式不報錯,但是結果迥異
np.multiply(a.T,b)     #程式不報錯,結果為上一行命令的轉置

a*b    #結果報錯
a.T*b  #出現3×3矩陣
a*b.T  #出現3×3矩陣

也就是說矩陣的乘法最為複雜。我在寫演算法的時候總是要想半天我要得的矩陣最終是幾乘幾的,然後再一點一點算,如果還是不確定的話,就拿筆算出來一兩個,一對就能確定無疑了。

字典

如果有一天我想要不作處理直接用字典做乘法,我的程式設計生涯可能就該結束了。

混合使用

至於混合著使用,也可以

import numpy as np
a=np.matrix([1,2,3])
b=np.array([4,5,6])
np.dot(a,b)
np.multiply(a,b)

但是在寫一些演算法的過程中,因為很多內建函式返回的值型別都不一樣,有的返回陣列,有的返回矩陣,有的返回元組等等。我一般都是加上一個型別轉換函式,將所有的型別都統一。要不然型別混亂的時候,對於寫演算法得出結果來實在是藍瘦。所以我建議將資料都轉換成相同的型別。

大概第四章就結束了。原理部分沒必要看。

2018-8-20 13:07