欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于numpy數(shù)組中元素單個(gè)選取或部分選取問題

 更新時(shí)間:2023年07月07日 10:05:05   作者:遣雋命運(yùn)  
這篇文章主要介紹了關(guān)于numpy數(shù)組中元素單個(gè)選取或部分選取問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

numpy數(shù)組中元素單個(gè)選取或部分選取

一維數(shù)組中選擇部分元素輸出,即數(shù)組名【【下標(biāo)】】,是兩個(gè)中括號!

二維數(shù)組選取一個(gè)元素,即數(shù)組名【行,列】,行列是從0開始的。

行列可以省略,行和列全部省略時(shí),輸出整個(gè)數(shù)組。

行省略,代表輸出所有行;列省略,代表輸出所有列。

可以指定輸出某幾行、某幾列,即數(shù)組名【1:3,1:4】,輸出1到2行且1到3列的所有元素,即輸出二維數(shù)組。

import numpy as np
ans = np.array([1,2,3,4,5,6,7,8,9]) ? ?#一維數(shù)組
a = np.array([1,2,3,4,5,6,7]) ? ?#一維數(shù)組
b = np.array([[1,2,3],[4,5,6],[7,8,9]]) ? ?#二維數(shù)組
#獲取指定位置的元素
print(ans[[2,3,5]]) ? ? ?#即為輸出ans數(shù)組中下標(biāo)為2,3,5的元素
print(b[1,2]) ? ?#輸出1行2列的元素,這里的行和列是從0開始的
print(b[1,:]) ? ?#輸出1行的所有元素,“:”就代表著輸出所有元素
print(b[:,2]) ? ?#輸出2列的所有元素
print(b[1:3,0:3]) ? ?#1到2行,0到2列的元素,“端點(diǎn)左閉右開”

numpy數(shù)組操作

引言

  • python中用list保存一組值,可以用來作為數(shù)組使用,由于列表的元素可以是任何對象,英雌列表中所保存的是對象的指針,為了保存一個(gè)簡單的[1,2,3],需要三個(gè)指正和三個(gè)整數(shù)對象,對于數(shù)值運(yùn)算來說這種結(jié)果顯然比較浪費(fèi)你內(nèi)存和CPU計(jì)算時(shí)間
  • 此外python還提供了一個(gè)array模塊,array對象和列表不同,他直接保存數(shù)值,呵呵C語言的一位數(shù)據(jù)比較類似,但是由于它不支持多維,也沒有各種運(yùn)算函數(shù),因此也不適合做數(shù)值運(yùn)算
  • numpy的誕生彌補(bǔ)了這些不足,numpy提供了ndarray對象:是存儲單一數(shù)據(jù)類型的多維數(shù)組

numpy是高性能科學(xué)計(jì)算和數(shù)據(jù)分析的基礎(chǔ)包,支持為讀書族與矩陣運(yùn)算包括:

  • 一個(gè)強(qiáng)大的n為數(shù)組對象ndarray,具有適量算數(shù)運(yùn)算和復(fù)雜廣播能力的快速且節(jié)省時(shí)間的多維數(shù)組。
  • 用于對整組數(shù)據(jù)進(jìn)行快速運(yùn)算的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)
  • 對于讀寫磁盤數(shù)據(jù)的工具以及用于操作內(nèi)存映射文件的工具
  • 線性代數(shù),隨機(jī)數(shù)生成以及傅里葉變換等功能

ndarray

  • N維數(shù)組對象ndarray是用于存放同類型元素的多維數(shù)組
  • ndarray中的每個(gè)元素在內(nèi)存中都有相容存儲大小的區(qū)域
  • ndarray中的每個(gè)元素是數(shù)據(jù)類型對象的對象簡稱dtype
  • 可以對數(shù)組進(jìn)行索引和切片
  • 可以通過ndarray的方法和屬性來訪問和修改ndarray的內(nèi)容

創(chuàng)建nadrray:創(chuàng)建數(shù)組最簡單的辦法就是使用array函數(shù),它接受一切序列型的對象,然后產(chǎn)生一個(gè)含有傳入數(shù)據(jù)的numpy數(shù)組,其中嵌套序列(等長列表組成的列表)將會被轉(zhuǎn)化為一個(gè)多維數(shù)組

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

object 數(shù)組或嵌套的數(shù)列

dtype 數(shù)組元素的數(shù)據(jù)類型 可選

copy 對象是否需要復(fù)制

order 創(chuàng)建數(shù)組的樣式,c為行方向,F(xiàn)為列方向,A為任意方向

subok 默認(rèn)返回一個(gè)與基類類型一致的數(shù)組

ndmin 指定生成數(shù)組的最小維度

import numpy as np
a = [1,2,3,4]
b = np.array(a)
print(b)
>>> array([1,2,3,4])
c = np.array([[1,2],[3,4]])
print(c)
>>>>[[1,2]
[3,4]]

除了np.array之外,還有一些函數(shù)也可以新建數(shù)組:

  • zrrors和ones分別可以創(chuàng)建指定長度或者形狀的全0或1數(shù)組
  • empty可以創(chuàng)建一個(gè)沒有任何具體值的數(shù)組
np.zeros(3) # 全0數(shù)組
np.ones(3) # 全1數(shù)組
np.zeros((3,3)) #全0二維數(shù)組 三行三列
np.zeros((3,1))  # 0二維數(shù)組 三行一列
np.zeros((1,3))
np.ones((3,3))
np.identity(3) #單位矩陣,三行三列

ndarray之創(chuàng)建數(shù)組

創(chuàng)建隨機(jī)數(shù)

均勻分布

  • np.random.rand(10,10) 創(chuàng)建指定形狀(示例為10行10列)的數(shù)組(范圍在0-1之間)
  • np.random.uniform(0,100) 創(chuàng)建指定范圍內(nèi)的一個(gè)數(shù)
  • np.random.randint(0,100) 創(chuàng)建指定范圍內(nèi)的整數(shù)

正態(tài)分布

  • np.random.normal(1.75,0.1,(2,3)) 給定均值/標(biāo)準(zhǔn)差/維度的正態(tài)分布

創(chuàng)建隨機(jī)數(shù)組

np.random.randint(0,50,5) # 隨機(jī)數(shù)組,5個(gè)0-50之間的數(shù)字
np.random.randint(0,50,(3,5)) #3行5列 供15個(gè)隨機(jī)數(shù),都在0-50之間
np.random.rand(10) #10個(gè)結(jié)余[0,1)之間的隨機(jī)數(shù)
np.random.standard_noraml(5) #從標(biāo)準(zhǔn)正太分部中隨機(jī)采樣5個(gè)數(shù)字

ndarray的數(shù)組屬性

用法說明
b.size數(shù)組元素個(gè)數(shù)
b.shape數(shù)組形狀
b.ndim數(shù)組維度
b.dtype數(shù)組元素類型
b.ltemsize數(shù)組元素字節(jié)大小

b.reshape()可以更改形狀(3,2)變(2,3)或者其他

數(shù)組和標(biāo)量之間的運(yùn)算

數(shù)組很重要,因?yàn)樗梢允俏覀儾挥镁帉懷h(huán)即可對數(shù)據(jù)執(zhí)行批量運(yùn)算,這通常叫做矢量化,大小相同的數(shù)組之間的任何算數(shù)運(yùn)算都會將運(yùn)算應(yīng)用到元素級,同樣,數(shù)組與標(biāo)量的算數(shù)運(yùn)算也會將那個(gè)表兩只傳播到各個(gè)元素

arr = np.array([[1.,2.,3.],[4.,5.,6.]])
print(arr)
>>>array([[1., 2., 3.],
       [4., 5., 6.]])
print(1/array)
>>>array([[1.        , 0.5       , 0.33333333],
       [0.25      , 0.2       , 0.16666667]])
print(arr-arr)
>>>array([[0., 0., 0.],
       [0., 0., 0.]])
print(arr*arr)
>>>array([[ 1.,  4.,  9.],
       [16., 25., 36.]])
print(arr*0.5)
>>>array([[0.5, 1. , 1.5],
       [2. , 2.5, 3. ]])

基本的索引和切片

  • 選取數(shù)據(jù)子集或單個(gè)元素的方式很多
  • 以為數(shù)組很簡單,從表面上看,他們跟python列表差不多
  • 一位數(shù)組跟列表最重要的區(qū)別在于,數(shù)組切片是原始數(shù)據(jù)的視圖,這意味著數(shù)據(jù)不會被復(fù)制,數(shù)組視圖上任何修改都會直接反應(yīng)到原始數(shù)組上
  • 將一個(gè)表兩只賦值給一個(gè)切片是,該值會自動(dòng)傳播到整個(gè)選取
arr = np.arange(10)
print(arr[5])
>>>5
print(arr[5:8])
>>>array([5,6,7])
print(arr[5:8]=12)
>>>array([0,1,2,3,4,12,12,12,8,9])
arr_slice = arr[5:8]
arr_slice[1] = 12345
print(arr)
>>>array([0,1,2,3,4,12,12345,12,8,9])
arr_slice[:] = 64
print(arr)
>>>array([0,1,2,3,4,64,64,64,8,9])
  • 在二維數(shù)組中,個(gè)所有位置上的元素不再是標(biāo)量,而是一維數(shù)組
  • 可以對個(gè)元素進(jìn)行遞歸訪問,但這樣有點(diǎn)麻煩
  • 傳入一個(gè)以逗號隔開的所有列表來選取單個(gè)元素
  • 在多維數(shù)組中,如果省略了后面的索引,則返回對象會使一個(gè)維度低一點(diǎn)的ndarray
arr3d = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print(arr3d)
>>>array([[[ 1,  2,  3],
        [ 4,  5,  6]],
       [[ 7,  8,  9],
        [10, 11, 12]]])
print(arr3d[0])
>>>array([[1, 2, 3],
       [4, 5, 6]])
print(arr3d[0][1])
>>>array([4, 5, 6])

數(shù)學(xué)和統(tǒng)計(jì)方法

可以通過數(shù)組上的一組數(shù)學(xué)函數(shù)對整個(gè) 數(shù)組或者某個(gè)軸向的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算

方法說明
sum對數(shù)組中全部或軸向元素求和。零長度的數(shù)組的sum為0
mean算數(shù)平均數(shù),零長度的數(shù)組的mean為NAN
std,var分別為標(biāo)準(zhǔn)差和方差,自由度可調(diào)(默認(rèn)為n)
min,max最小值和最大值
argmin,argmax分別為最小值和最大值的索引
cumsum所有元素的累加
cumprod所有元素的累積
arr = np.random.randn(5,4) #5行4列的正太分部的數(shù)據(jù)
print(arr.mean()) #這個(gè)值和下面方法的值相同
print(np.mean(arr))
print(arr.sum())

值得注意的是:

mean和sum這類的函數(shù)可以接受一個(gè)axis參數(shù)(用于計(jì)算該軸向上的統(tǒng)計(jì)值)

arr.mean(axis=1)
arr.sum(0)

cumsum:按照所給定的周參數(shù)返回元素的梯形累積和,axis=0,按照行累加。axis=1,按照列累加

cumprod:按照所給定的周參數(shù)返回元素的梯形累積乘積,axis=0,按照行累積,axis=1按照列累積

arr = np.array([[0,1,2],[3,4,5],[6,7,8]])
arr.cumsum(0)
>>>array([[ 0,  1,  2],
       [ 3,  5,  7],
       [ 9, 12, 15]], dtype=int32)
arr.cumprod(1)
>>>array([[  0,   0,   0],
       [  3,  12,  60],
       [  6,  42, 336]], dtype=int32)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python二維鍵值數(shù)組生成轉(zhuǎn)json的例子

    python二維鍵值數(shù)組生成轉(zhuǎn)json的例子

    今天小編就為大家分享一篇python二維鍵值數(shù)組生成轉(zhuǎn)json的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Django + Uwsgi + Nginx 實(shí)現(xiàn)生產(chǎn)環(huán)境部署的方法

    Django + Uwsgi + Nginx 實(shí)現(xiàn)生產(chǎn)環(huán)境部署的方法

    Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比較常見的一種方式。這篇文章主要介紹了Django + Uwsgi + Nginx 實(shí)現(xiàn)生產(chǎn)環(huán)境部署,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python中迭代器與生成器的使用詳解

    Python中迭代器與生成器的使用詳解

    迭代和生成器是 Python 中非常強(qiáng)大的功能,它們允許我們高效地處理集合數(shù)據(jù),本文將詳細(xì)介紹如何在 Python 中使用迭代器和生成器,并通過具體的代碼示例來展示它們的工作原理和應(yīng)用場景,感興趣的小伙伴跟著小編一起來看看吧
    2024-11-11
  • Python爬蟲如何應(yīng)對Cloudflare郵箱加密

    Python爬蟲如何應(yīng)對Cloudflare郵箱加密

    這篇文章主要介紹了Python爬蟲如何應(yīng)對Cloudflare郵箱加密,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python excel和yaml文件的讀取封裝

    python excel和yaml文件的讀取封裝

    這篇文章主要介紹了python excel和yaml文件的讀取封裝,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • python基礎(chǔ)學(xué)習(xí)之如何對元組各個(gè)元素進(jìn)行命名詳解

    python基礎(chǔ)學(xué)習(xí)之如何對元組各個(gè)元素進(jìn)行命名詳解

    python的元祖和列表類似,不同之處在于元祖的元素不能修改,下面這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)學(xué)習(xí)之如何對元組各個(gè)元素進(jìn)行命名的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-07-07
  • Python網(wǎng)頁正文轉(zhuǎn)換語音文件的操作方法

    Python網(wǎng)頁正文轉(zhuǎn)換語音文件的操作方法

    這篇文章主要介紹了Python網(wǎng)頁正文轉(zhuǎn)換語音文件的操作方法,需要的朋友可以參考下
    2018-12-12
  • Python常用基礎(chǔ)模塊之os.path模塊詳解

    Python常用基礎(chǔ)模塊之os.path模塊詳解

    這篇文章主要介紹了Python常用基礎(chǔ)模塊之os.path模塊詳解,os模塊的子模塊os.path 是專門用于進(jìn)行路徑操作的模塊,常用的路徑操作主要有判斷目錄是否存在、創(chuàng)建目錄、刪除目錄和遍歷目錄等,需要的朋友可以參考下
    2023-08-08
  • 淺析python3中的os.path.dirname(__file__)的使用

    淺析python3中的os.path.dirname(__file__)的使用

    這篇文章主要介紹了python3中的os.path.dirname(__file__)的使用,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • 對python Tkinter Text的用法詳解

    對python Tkinter Text的用法詳解

    今天小編就為大家分享一篇對python Tkinter Text的用法詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10

最新評論