1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側工具欄

      新聞中心

      這里有您想知道的互聯(lián)網營銷解決方案
      python+numpy實現(xiàn)的基本矩陣操作示例-創(chuàng)新互聯(lián)

      本文實例講述了python+numpy實現(xiàn)的基本矩陣操作。分享給大家供大家參考,具體如下:

      成都地區(qū)優(yōu)秀IDC服務器托管提供商(創(chuàng)新互聯(lián)公司).為客戶提供專業(yè)的樂山服務器托管,四川各地服務器托管,樂山服務器托管、多線服務器托管.托管咨詢專線:13518219792
      #! usr/bin/env python
      # coding: utf-8
      # 學習numpy中矩陣的代碼筆記
      # 2018年05月29日15:43:40
      # 參考網站:http://cs231n.github.io/python-numpy-tutorial/
      import numpy as np
      #==================矩陣的創(chuàng)建,增刪查改,索引,運算=================================#
      #==================矩陣的創(chuàng)建,增刪查改=================================#
      # # 創(chuàng)建行向量
      # x = np.array([1,2,3])
      # # 修改某個值
      # x[0] = 0
      # 注意下標索引從0開始,與MATLAB不一樣
      # print(x)
      # print(x.shape)
      # print(type(x))
      #
      # # 創(chuàng)建二維與多維矩陣
      # matrix = np.array([[1,2,3],[1,2,3],[2,3,4]]) # 注意這里有一個小括號,小括號中還有一個中括號
      # # 取出某個元素
      # a1 = matrix[0][0]
      # print(a1)
      # print(matrix.shape)
      #
      # # # 創(chuàng)建特殊矩陣
      # # 0矩陣
      # zeros = np.zeros((2,2))# 注意,這里有兩個小括號,并且返回浮點型數(shù)據,而不是整形
      # print(zeros)
      #
      # # 創(chuàng)建1矩陣
      # ones = np.ones([3,3])# 注意這里也是兩個括號,其中里面的小括號也可是中括號,但是不建議使用
      # print(ones)
      #
      # # 創(chuàng)建元素相同()的矩陣
      # full = np.full((2,3),2) #其中第一個括號表示矩陣大小,后面的數(shù)字表示填充的數(shù)字
      # print(full)
      #
      # # 創(chuàng)建對角數(shù)為1的矩陣
      # diag = np.eye(3,3)#注意這里如果行列數(shù)不同,只會讓行列下標相等的元素為1
      # print(diag)
      #
      # # 創(chuàng)建隨機矩陣(值在0到1之間),注意這個方式不可以重復,也就是隨機不可以全部重現(xiàn),每次運行都會不一樣
      # random = np.random.random((2,3))
      # 寫到這里,我需要說明一點,就是如何確定括號的個數(shù)
      # numpy下的方法肯定是有一個小括號的,且不可以改變
      # 想要表達多維陣列,則需要輸入一個元祖(小括號)或者列表(中括號)來創(chuàng)建,這時就需要小括號或者中括號
      # 如果是自己手敲出多維陣列,每一行需要中括號表示,用逗號分離每一行,然后外層再用一個中括號表示整個矩陣,然后再作為一個舉證輸入函數(shù)中
      # print(random)
      #=======================矩陣的索引,切片=========================#
      metaMatrix = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])#用逗號,而不能用空格
      # # 單個元素的索引
      # a = metaMatrix[0][0]
      # b = metaMatrix[0,0] # 這里不能使用小括號
      # print(a)
      # print(b)
      #
      # # 切片操作
      # a_ = metaMatrix[0:2,1]# 注意這里冒號后面的數(shù)是不索引的,如果缺省就是到最后,冒號前是可以得到的
      # # 冒號后的數(shù)不索引,這時python的特點,與MATLAB不一樣
      # print(a_)
      #
      # # 注意切片操作后矩陣維度的變化
      # a1 = metaMatrix[0:1,:]
      # a2 = metaMatrix[0,:]
      # b = metaMatrix[0,1]
      # print(a1)
      # print(a2)
      # print(b)
      # # 注意到這兩行代碼得到的數(shù)據是一樣的,但是維度已經發(fā)生了變化
      # print(a1.shape) #a1仍然是矩陣
      # print(a2.shape) #a2則是一個行向量,相比原矩陣,這里就少了一個維度,這與MATLAB有點不同
      # print(b.shape) #b是沒有維度的,就是一個數(shù)而已
      #
      # # 利用已有矩陣創(chuàng)建新矩陣,方法比較多樣化
      # SrcMatrix = np.array([[1,2], [3, 4], [5, 6]])
      # print(SrcMatrix)
      # # 利用矩陣的方式索引原有矩陣
      # matrix1 = SrcMatrix[[0,1],[1,1]]# 這時將兩個中括號的對應元素組合起來進行索引,是單個元素索引的擴展
      # # 進行單個元素索引,然后組合起來,并用np.array創(chuàng)建成np的數(shù)組
      # matrix2 = np.array([SrcMatrix[0][1],SrcMatrix[1][1]])
      # # 如果不用np.array來創(chuàng)建成np的矩陣,就會導致數(shù)據格式的變化,對應的操作就會發(fā)生變化
      # matrix3 = [SrcMatrix[0][1],SrcMatrix[1][1]]
      # print(matrix1)
      # print(matrix2)
      # print(matrix3)
      # print(type(matrix1))
      # print(type(matrix2))
      # print(type(matrix3))
      #
      # # numpy矩陣的元素索引方式可以用于改變或者選擇矩陣不同行的元素(不僅僅是同一列的數(shù)據)
      # a = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
      # b = np.array([0,2,0,1])
      # # 先介紹一下np.arrange()函數(shù),表示創(chuàng)建一個從起始值到結束值少1(前面提到過,python中經常不到這個值)的行向量,也可以設定步長
      # c = a[np.arange(4),b] #其實就是相當于矩陣方式索引一個矩陣中的元素(這比MATLAB中更加自由一些)
      # print(c)
      # # 改變矩陣的指定元素
      # a[np.arange(4),b] += 10
      # print(a)
      #
      # # 布爾型陣列,可以用來索引一些滿足特定條件的元素
      # matrix = np.array([[1,2],[3,4],[5,6]])
      # bool_id = matrix>2 # 也可以寫成bool_id =(matrix>2),注意,寫成中括號就是不同含義了
      # print(bool_id)
      # print(matrix[bool_id])
      # # 可以將上面兩行代碼合成一行
      # matrix_ = matrix[matrix>2]# 注意,這里得到的是一維向量
      # print(matrix_)
      #
      #=========================numpy array的數(shù)據類型=======================================#
      # # numpy的array的數(shù)據類型是自動識別的,但也可以指定
      # # 如果輸入為整形,則會給數(shù)據的類型定義為int64
      # matrix1 = np.array([1,2,3])
      # print(matrix1.dtype)
      # # 如果輸入的數(shù)據為小數(shù)點,則會給數(shù)據類型定義為float64
      # matrix2 = np.array([1.0,2.0,3.0])
      # print(matrix2.dtype)
      # # 如果有浮點型也有整形數(shù)據,會賦值給占字節(jié)數(shù)多的數(shù)據類型,且對應為64的
      # matrix3 = np.array([1,2.0])
      # print(matrix3.dtype)
      # # 也可以指定數(shù)據類型
      # matrix4 = np.array([1,2],dtype=np.int8)
      # print(matrix4.dtype)
      # # 當數(shù)據本身和指定的數(shù)據類型不符合時,會將數(shù)據轉化成指定的數(shù)據類型,有可能會發(fā)生溢出
      # matrix5 = np.array([1,2000000,3.1],dtype=np.int8)
      # print(matrix5)
      # print(matrix5.dtype)
      #=========================矩陣的運算===================================#
      #
      # # 兩種加法和減法,乘除
      # x = np.array([[1,2],[3,4]])
      # y = np.array([[5,6],[7,8]])
      # sum1 = x + y# 直接使用加法
      # sum2 = np.add(x,y)# 運用numpy的函數(shù)
      # print(sum1)
      # print(sum2)
      #
      # substract1 = x - y
      # substract2 = np.subtract(x,y)
      # print(substract1)
      # print(substract2)
      #
      # prodution1 = x * y# 這是對應元素的乘法
      # prodution2 = np.multiply(x,y)
      # print(prodution1)
      # print(prodution2)
      #
      # devide1 = x/y
      # devide2 = np.divide(x,y)
      # # 注意矩陣進行運算時,數(shù)據類型不改變,因此,需要注意溢出現(xiàn)象等
      # print(devide1)
      # print(devide2)
      #
      # # 矩陣的兩種向量乘法(使用dot)
      # x = np.array([[1,2],[3,4]])
      # y = np.array([[5,6],[7,8]])
      # multiDot1 = x.dot(y)
      # multiDot2 = np.dot(x,y)
      # print(multiDot1)
      # print(multiDot2)
      #
      # # 矩陣運算基本函數(shù)
      # x = np.array([[1,2],[3,4]])
      # # 求和函數(shù)
      # # 對所有元素求和
      # sum_all = np.sum(x)
      # # 對列求和
      # sum_column = np.sum(x, 0)# 注意和MATLAB中的區(qū)分一下。
      # # 對行求和
      # sum_row = np.sum(x, 1)
      # print(sum_all)
      # print(sum_column)
      # print(sum_row)
      #
      # # 矩陣的轉置
      # x = np.array([[1,2],[3,4]])
      # transform = x.T
      # print(transform)
      #
      # # broadcasting的應用,可以進行不同維度的矩陣算數(shù)運算
      # # 考慮將一個常量行向量加到一個矩陣的每一行上
      # # 下面會將x行向量加到y(tǒng)矩陣的每一行上(但是這個方法由于有顯示循環(huán),而顯示循環(huán)比較慢一些,我們經常會采用其他方法)
      # y = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
      # x = np.array([1, 0, 1])
      # y_ = np.empty_like(y) # 創(chuàng)建一個和y相同維度的矩陣,但沒有放內容,但是已經開辟了一塊內存,其中的數(shù)據可能隨機
      # print(y_)
      # for i in range(4):
      #  y_[i,:] = y[i,:] + x
      # print(y_)
      # # 另一種方法是我們先將x復制3份,垂直放置,組成一個矩陣,再進行矩陣加法
      # x_ = np.tile(x,(4,1))# np.tile表示復制,(4,1)表示將x作為元素,組成4*1的矩陣形式
      # y__ = np.add(y,x_)
      # print(y__)
      # # 實際上,如果不對x進行處理,而直接將兩者相加,如果x和y滿足一些條件,x會自動復制
      # # 條件是x和y在一個維度上相等,另一個維度上不一樣并且可以通過復制可以實現(xiàn)維度相等,則會自動復制
      # print(y+x)
      # # 這里進行一個其他的測試
      # print(x.T+y.T)# 可以看出可以實現(xiàn)列的復制
      # 這里進行都不為向量的相加
      # a1 = np.array([[1,2],[3,4],[5,6],[7,8]])
      # a2 = np.array([[1,0],[0,1]])
      # print(a1+a2)# 這里會出錯,說明只能自動進行一維數(shù)據的復制,多維數(shù)據不支持自動復制,而需要顯式復制
      # # 同樣的,加法,減法和除法也都適合上面的自動復制原理
      # 將一個矩陣或者向量進行維度的調整
      x1 = np.array([1,2,3])
      y1 = np.array([1,2])
      # 實現(xiàn)x1和y1轉置的矩陣乘法,可以先將y1變成列向量
      print(np.multiply(x1, np.reshape(y1,(2,1))))
      # 試一下其他的維度變化
      x2 = np.array([[1,2],[3,4],[5,6],[7,8]])
      print(np.reshape(x2, (2,4)))
      print(np.reshape(x2, (4,2)))# 基本上按照西安航后列的順序進行
      
      

      當前名稱:python+numpy實現(xiàn)的基本矩陣操作示例-創(chuàng)新互聯(lián)
      網站路徑:http://www.ef60e0e.cn/article/dpiisc.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        绍兴县| 抚宁县| 扶风县| 元江| 云龙县| 南澳县| 新闻| 天柱县| 黑水县| 安丘市| 宣化县| 新郑市| 铁力市| 江门市| 安仁县| 新蔡县| 甘孜县| 乌拉特中旗| 盖州市| 华亭县| 澄迈县| 小金县| 鹿泉市| 望奎县| 阿拉善左旗| 滁州市| 三门县| 辽宁省| 芷江| 蓬安县| 杂多县| 炉霍县| 礼泉县| 祥云县| 安溪县| 合山市| 玉龙| 九寨沟县| 买车| 通河县| 日照市|