今天用Python進行數據處理的時候,突然發現自己搞不清Python中的列表和數組有啥區別及其運算規則,總是得不到自己想要的結果。於是就開始在網上找相關資料,發現很多資料講的都十分片面,下面自己總結的各個資料,給大家進行詳細的解釋:
1.列表、數組和矩陣
列表是Python中最基本的數據結構,列表中可以存儲數字、字符串等,因此Python可以通過列表存儲數組;
數組是Python擴展庫Numpy中的一種數據結構ndarray;
矩陣是同樣是Python擴展庫Numpy中的一種數據結構mat;
那麼既然存在列表,爲什麼我們不直接使用Python中的列表,而使用Numpy呢?原因顯然意見,Python中列表的存儲效率和輸入輸出性能遠不及Numpy中的數組和矩陣,但是由於列表中可以存儲任意元素,因此列表的通用性方面要比數組和矩陣強。總之列表與數組、矩陣各有各的優勢,要視使用場合選擇合適的數據結構。
同樣Numpy中的數組和矩陣也是有區別的:
Numpy中的矩陣必須是2維的,而Numpy中數組可以是多維的,因此矩陣是數組的一個特例,所以在Numpy中的矩陣繼承着數組的所有特性;
同時我們常常需要查看列表、數組和矩陣的屬性,如size、shape、len
其中len():返回對象的長度,可以作用於列表、數組和矩陣:len(list([1,2,3]))
size()和shape()是Numpy擴展庫中才用的函數:
size():計算所有數據的個數,同樣可以作用於列表、數組和矩陣:np.size(np.array([1,2,3]))
shape():得到數據每維的大小,同樣可以作用於列表、數組和矩陣:np.shape(np.array([1,2,3]))
不同於len,shape和size還可以作爲數組和矩陣的屬性(列表不行),使用方法如下:a.shape、a.size
2.Python中的星號(*)、np.multiply()、np.dot()
1.星號(*):
對數組執行對應位置相乘;對矩陣執行矩陣乘法運算
2.np.multiply()
不管對矩陣還是數組都是執行對應位置相乘
3.np.dot()
對秩爲1的數組:對應位置相乘並求和
對秩不爲1的數組:矩陣乘法運算
對矩陣:矩陣乘法運算
上面是對列表、數組、矩陣以及Python中各種乘法的總結,果然總結對自己理解問題有很大的幫助,現在自己自己很清楚它們的用法了,希望這篇博客也可以幫助大家~
每天進步一點點~