日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > numpy中的matrix和array

numpy中的matrix和array

來源:程序員人生   發布時間:2015-08-26 07:57:21 閱讀次數:3871次

Preface

在相干聚類算法的實現進程中,用python語言實現,會常常出現array和matrix的混淆,這里做個總結。

array數組

numpy中最基本(默許)的類型是array,他的相干操作都是按元素操作的即用作數值計算當中(按元素操作有+,-,,/,*等)。相乘舉例:

from numpy import * >>> a=array([1,2]) >>> a array([1, 2]) >>> b=array([2,3]) >>> b array([2, 3]) >>> c=a*b >>> c array([2, 6]) >>> dot(a,b) 8

兩個array的相乘*指的是對應元素的相乘;兩個array的dot表示矩陣的相乘。

  • 若a是array,則a.T表示轉置。
  • 把array轉換為matrix用asmatrix()

  • 多數numpy函數返回的是array類型,不是matrix類型。

matrix矩陣

在numpy中的特殊類型,是作為array的子類出現,所以繼承了array的所有特性并且有自己的特殊的地方,專門用來處理線性代數操作(*表示矩陣的相乘,但是對兩個matrix的除/則表示對應元素的相除。)。乘法舉例如:

>>> m=mat([2,3]) >>> m matrix([[2, 3]]) >>> n=([1,2]) >>> n [1, 2] >>> p=m*n Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:Python27libsite-packages umpymatrixlibdefmatrix.py", line 341, i n __mul__ return N.dot(self, asmatrix(other)) ValueError: objects are not aligned >>> dot(m,n) matrix([[8]]) >>> multiply(m,n) matrix([[2,6]])

* 兩個matrix相乘毛病緣由是m的列不等于n的行,也即不對齊(aligned),若對齊了,則是對應元素的相乘,返回1個matrix;兩個matrix的表示是兩個矩陣的相乘。兩個matrix的dot表示矩陣相乘。兩個matrix的multiply表示對應元素的相乘。*

  • matrix中.H,.A,.I表示共軛,轉置,逆矩陣。
  • 把matrix轉換為array用asarray()
  • asanyarray()根據和你的輸入的類型保持1致。

array和matrix的1個很難理解的點

這里會觸及到rank的概念,在線性代數(math)rank表示秩,但是必須明確的是在numpy里rank不是表示秩的概念,是表示維數的概念,這個理解的話需要看此文章:對多維arrays的數據結構解釋:
多維arrays數據結構理解

這里暫時理解為秩,雖然這樣理解是毛病的,但是可以說的通1些事情。(在實際的array和matrix里,英文里介紹的關于rank就用線性代數的秩來理解,但是英文會出現dimensions等于多少等,要求matrix的dimesions必須為2,這里其實指的就是秩,dimensions才是在numpy里的真實的理解情勢)

array要求秩為1(N*1,1*N等)或大于2
matrix要求秩必須為2(rank必須為2)

  • 下面是關于ndim和size的理解:
>>> a array([1, 2]) >>> b array([[1, 2], [2, 3]]) >>> c matrix([[1, 2, 3, 4], [2, 3, 4, 5]]) >>> d array([[1, 2, 3, 4], [2, 3, 4, 5]]) >>> e matrix([[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]]) >>> a.size 2 >>> a.ndim 1 >>> b.size 4 >>> b.ndim 2 >>> c.size 8 >>> c.ndim 2 >>> d.size 8 >>> d.ndim 2 >>> e.ndim 2 >>>e.size 12

這里ndim就是求的是rank,所以會發現matrix的都是2,但是array的就會存在差異,需要計算等。size返回的是元素的個數

  • 關于dim, shape, rank, dimension and axis in numpy的細節的問題理解:

stackoverflow地址

補充

如何讓

 M = matrix([[1], [2], [3], [4]])
 如何轉變成
 array([1, 2, 3, 4])

比較優雅的辦法:

>>> x=matrix(arange(12).reshape((3,4)))
>>> x
matrix([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]])
>>> x.getA1()
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

總結

在應用中,還是用array好點,array的唯1缺點就是在表示矩陣的相乘時候,要用dot,而不是*。

關于numpy里的array和matrix的其余的操作函數,另見wiki地址:http://wiki.scipy.org/NumPy_for_Matlab_Users

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 美日韩在线观看 | 日本一区二区在线视频 | 国产精品国产a级 | 欧美日韩精品一二三区 | 国产精品久久久久久久久久小说 | 精品九九 | 国产成人av一区二区三区 | 久久久久久免费精品一区二区三区 | 丁香一区二区 | 99久久精品一区字幕狠狠婷婷 | 国产福利在线 | 91嫩操| 中文字幕亚洲视频 | 日韩欧美一卡二卡 | 日本视频网 | 在线视频99 | 亚洲美女视频一区 | 亚洲五月六月 | 亚洲精品午夜 | 国产精选一区 | 国产在线二区 | 午夜一区二区三区 | 欧美日韩国产一区二区三区 | 不卡的av网站 | 丰满岳乱妇一区二区三区 | 国产三级电影在线观看 | 毛片在线播放网站 | www.天天射 | 男人天堂网在线观看 | 麻豆精品国产传媒mv男同 | 92久久| 黄色国产在线观看 | 欧美一区二区三区在线视频 | 99在线免费视频 | 美女久久 | 国产一区二区三区在线免费 | 免费看黄在线网站 | 色婷婷综合久久久久中文一区二区 | 欧美在线播放一区 | 日韩精品中文字幕在线 | 在线一区二区免费 |