日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

Python—实训day7上—Nmupy数值计算基础

發(fā)布時(shí)間:2023/12/18 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python—实训day7上—Nmupy数值计算基础 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Numpy是用于數(shù)據(jù)科學(xué)計(jì)算的基礎(chǔ)模塊,不但能夠完成科學(xué)計(jì)算的任務(wù),而且能夠被用作高效的多維數(shù)據(jù)容器,可用作存儲(chǔ)和處理大型矩陣,它的運(yùn)算速度會(huì)比Python自帶的列表運(yùn)算速度要快。Numpy的數(shù)據(jù)容器可用來存儲(chǔ)多種類型數(shù)據(jù),這使得Numpy可以快速并且無縫整合各種類型數(shù)據(jù)。Numpy本身并沒有提供很多高級(jí)的數(shù)據(jù)分析功能,理解Numpy數(shù)組及數(shù)組計(jì)算有助于更加高效地使用諸如pandas等數(shù)據(jù)處理工具。

1掌握Numpy數(shù)組對(duì)象ndarray

ndarray(數(shù)組)是存儲(chǔ)單一數(shù)據(jù)類型的多維數(shù)組。

1.1創(chuàng)建數(shù)組

1.1.1numpy.array()創(chuàng)建數(shù)組

numpy.array(object, dtype=None, copy=True, order='K',subok=False, ndmin=0)

import numpy as np#一維數(shù)組 arr1 = np.array([1, 2, 3, 4]) arr1#二維數(shù)組 arr2 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) arr2

數(shù)組屬性:

arr2.shape #數(shù)組形狀 arr2.ndim #數(shù)組維度 arr2.size #數(shù)組個(gè)數(shù) arr2.dtype #元素類型

1.1.2arange、linspace創(chuàng)建數(shù)組(等差數(shù)組)

numpy.arange([start, ]stop, [step, ]dtype=None)

參數(shù)說明:

(1)start:可忽略不寫,默認(rèn)從0開始;起始值;

(2)stop:結(jié)束值;生成的元素不包括結(jié)束值;

(3)step:可忽略不寫,默認(rèn)步長(zhǎng)為1;步長(zhǎng);

(4)dtype:默認(rèn)為None,設(shè)置顯示元素的數(shù)據(jù)類型。

------------------

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

參數(shù)說明:

  • start:開始數(shù)值;
  • stop:結(jié)束數(shù)值;
  • num:默認(rèn)是50個(gè)樣本點(diǎn)(數(shù)據(jù)),為正整數(shù);
  • endpoint:默認(rèn)為True,如果改為Fasle取不到右端點(diǎn);
  • restep:步長(zhǎng),如第一個(gè)數(shù)據(jù)和第二個(gè)數(shù)據(jù)之間的距離;
  • dtype:可以設(shè)置數(shù)值類型。
  • np.arange(0, 1, 0.1) #第三個(gè)參數(shù)設(shè)置的是步長(zhǎng) np.linspace(0, 1, 10) #第三個(gè)參數(shù)設(shè)置的是生成個(gè)數(shù) np.linspace(0, 1, 10, endpoint=False) #endpoint:默認(rèn)為True,如果改為Fasle取不到右端點(diǎn)

    1.1.3logspace創(chuàng)建數(shù)組(等比數(shù)列)

    numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)

    參數(shù)說明:

    • start:代表間隔的起始值。
    • stop:代表以區(qū)間為基礎(chǔ)的間隔的停止值。
    • num:默認(rèn)是50個(gè)樣本點(diǎn)(數(shù)據(jù)),為正整數(shù)。
    • endpoint:默認(rèn)為True,如果改為Fasle取不到右端點(diǎn)。
    • base:代表日志空間的底數(shù),默認(rèn)是以10為底。
    • dtype:可以設(shè)置數(shù)值類型。
    np.logspace(0, 4, 5, base=2) #以base=2為底,0-4之間生成等差的5個(gè)值(0,1,2,3,4)作為指數(shù)

    1.1.4特殊數(shù)組

    (1)numpy.zeros(shape, dtype=float, order='C'):返回來一個(gè)給定形狀和類型的用0填充的數(shù)組。

    參數(shù)說明:

  • shape:形狀;
  • dtype:數(shù)據(jù)類型,可選參數(shù),默認(rèn)numpy.float64;
  • order:可選參數(shù),c代表與c語(yǔ)言類似,行優(yōu)先;F代表列優(yōu)先。
  • (2)numpy.eye(N, M=None, k=0, dtype=, order=‘C’):返回一個(gè)二維數(shù)組,其對(duì)角線元素為1,其余位置元素為0。

    參數(shù)說明:

  • N:返回?cái)?shù)組的行數(shù)
  • k:對(duì)角線的索引,0(默認(rèn)值)代表主對(duì)角線,正整數(shù)代表上三角內(nèi)的對(duì)角線,負(fù)整數(shù)代表下三角內(nèi)的對(duì)角線。
  • dtype:返回?cái)?shù)組的數(shù)值類型
  • order:是否在內(nèi)存中以C或fortran(行或列)順序存儲(chǔ)多維數(shù)據(jù),版本1.14.0中的新特性
  • (3)numpy.diag(v,k=0):以一維數(shù)組的形式返回方陣的對(duì)角線(或非對(duì)角線)元素,或?qū)⒁痪S數(shù)組轉(zhuǎn)換成方陣(非對(duì)角線元素為0).兩種功能角色轉(zhuǎn)變?nèi)Q于輸入的v。

    參數(shù)說明:

  • v : 如果v是二維數(shù)組,返回k位置的對(duì)角線。如果v是一維數(shù)組,返回一個(gè)v作為k位置對(duì)角線的2維數(shù)組。
  • k : 對(duì)角線的位置,大于零位于對(duì)角線上面,小于零則在下面。
  • (4)numpy.ones(shape, dtype=None, order='C')

  • shape:設(shè)置形狀;
  • dtype:指定數(shù)組的數(shù)據(jù)類型;
  • np.zeros(shape=(2,3)) #全零數(shù)組 np.eye(3) #對(duì)角線設(shè)置為1,其余位置為0 np.diag([1, 2, 3, 4]) #對(duì)角線設(shè)置數(shù)值,其余位置為0 np.ones(shape=(3,2)) #全為1的數(shù)組

    1.2數(shù)組數(shù)據(jù)類型

    #----整型轉(zhuǎn)變?yōu)楦↑c(diǎn)型 arr1 = np.array([1, 2, 3], dtype='int') arr1.dtype arr1 = np.float64(arr1) arr1.dtype#----浮點(diǎn)型轉(zhuǎn)變?yōu)檎?arr1 = np.array([1, 2, 3], dtype='float32') arr1.dtype arr1 = np.int64(arr1) arr1.dtype

    1.3生成隨機(jī)數(shù)

    #無約束條件下生成隨機(jī)數(shù) np.random.random(size=(4,3)) #生成服從正態(tài)分布的隨機(jī)數(shù) np.random.randn(3, 4) #生成給定上下范圍的隨機(jī)數(shù) np.random.randint(1, 5, size=(2,3)) #最小值不低于1,最大值不高于5,生成2行3列數(shù)組

    1.4通過索引訪問數(shù)組

    1.4.1一維數(shù)組索引

    arr1 = np.arange(10) arr1[-1] arr1[2:4] arr1[2:8:2] arr1[2:4] = 3,5

    1.4.2多維數(shù)組的索引

    arr2 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) arr2[1,1:3] arr2[1,(1,2)] arr2[2, :] arr2[0::2, :]

    1.5變換數(shù)組的形狀

    1.5.1轉(zhuǎn)換為數(shù)組形狀

    arr1 = np.arange(12) #一維數(shù)組 arr1.ndim #一維的#第一種:使用shape屬性 arr1.shape = 3,4 arr1 arr1.shape #(3, 4)#第二種:reshape方法 arr1 = arr1.reshape(2, 6) #需要賦值給原始數(shù)據(jù)才能生效 arr1 arr1.shape #(2, 6)

    1.5.2展平數(shù)組

    arr1.ravel() #橫向展平 arr1.flatten() #橫向展平 arr1.flatten('F') #縱向展平

    1.5.3組合數(shù)組

    arr1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) arr2 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) np.hstack((arr1, arr2)) #橫向組合 np.vstack((arr1, arr2)) #縱向組合 np.concatenate((arr1, arr2), axis=1) #橫向組合 np.concatenate((arr1, arr2), axis=0) #縱向組合

    1.5.4切割數(shù)據(jù)

    np.hsplit(arr1, 2) #橫向分割 np.vsplit(arr1, 3) #縱向分割 np.split(arr1, 2, axis=1) #橫向分割 np.split(arr1, 3, axis=0) #縱向分割

    2掌握Numpy矩陣與通用函數(shù)

    2.1創(chuàng)建矩陣

    matr1 = np.mat("1 2 3;4 5 6;7 8 9") matr2 = np.matrix([[1, 2, 3],[4, 5, 6],[2, 2, 3]])arr1 = np.array([[1, 2, 3],[4, 5, 6]]) arr2 = np.array([[1, 3, 4],[7, 5, 9]]) np.bmat("arr1 arr2;arr2 arr1")

    2.2矩陣的運(yùn)算

    2.2.1加減乘除

    matr1 + matr2 matr1 - matr2 matr1 * matr2 #矩陣意義上的相乘 np.multiply(matr1, matr2) #對(duì)應(yīng)位置元素的相乘 matr1 * 2

    2.2.2特有屬性

    matr1.T #自身的轉(zhuǎn)置mat = np.matrix([[1, 1],[-1, 1]]) mat.I #自身的逆矩陣

    3練習(xí)

    創(chuàng)建一個(gè)8?8的全零數(shù)組,并把1,3,5,7行和2,4,6列的元素設(shè)置為1。之后將數(shù)組的形狀轉(zhuǎn)變?yōu)??16。

    a = np.zeros((8, 8)) a[1::2 , 2::2] = 1 #a.shape = 4,16 a = a.reshape(4, 16) #賦值回原始數(shù)據(jù)才會(huì)生效

    ?

    總結(jié)

    以上是生活随笔為你收集整理的Python—实训day7上—Nmupy数值计算基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。