久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

手撕numpy(一):簡(jiǎn)單說(shuō)明和創(chuàng)建數(shù)組的不同方式?????

 昵稱(chēng)10087950 2022-07-29 發(fā)布于江蘇
作者丨黃偉呢
來(lái)源丨凹凸數(shù)據(jù)

最近給大家更新一波python的基礎(chǔ)知識(shí),這次帶來(lái)的是手撕numpy系列,。

1,、numpy的簡(jiǎn)介


numpy是"Numerical Python"的簡(jiǎn)稱(chēng),。

numpy提供了一個(gè)高性能的多維數(shù)組對(duì)象ndarray(N Dimension Array),以及大量的庫(kù)函數(shù)和操作,,可以幫助程序員輕松地進(jìn)行數(shù)值計(jì)算。

原生python語(yǔ)言執(zhí)行速度很慢,,C執(zhí)行500次,,python差不多只能執(zhí)行一次,但是python語(yǔ)法比其它編程語(yǔ)言要簡(jiǎn)單的多得多,。因此我們既想要某一個(gè)編程語(yǔ)言執(zhí)行速快,,同時(shí)還編程簡(jiǎn)單,。最終python通過(guò)集成C和C++,最終解決這個(gè)問(wèn)題,,也就是說(shuō):底層運(yùn)行的是C和C++的代碼,,但是上層使用的是python語(yǔ)言去寫(xiě)的。這就是我們?yōu)槭裁炊枷矚g使用"numpy庫(kù)"的原因,。

numpy作為很多的用來(lái)做數(shù)據(jù)挖掘,,數(shù)據(jù)分析,人工智能相關(guān)的技術(shù)組件的底層實(shí)現(xiàn),。像SciPy,、Matplotlib、Scikit-learn在一定程度上,,都需要依賴(lài)numpy,。

2、學(xué)習(xí)numpy的套路


學(xué)習(xí)怎么使用numpy組織數(shù)據(jù)(怎么創(chuàng)建出,,你想要的不同維度,,不同形狀的數(shù)組):numpy提供了一個(gè)高性能的多維數(shù)組對(duì)象:ndarray。

學(xué)習(xí)numpy提供的函數(shù)處理這個(gè)組好的數(shù)據(jù):numpy提供了很多很多的庫(kù)函數(shù),,幫助我們處理這些數(shù)據(jù),。

3、關(guān)于numpy中ndarray數(shù)據(jù)對(duì)象的結(jié)構(gòu)說(shuō)明


numpy中最重要的數(shù)據(jù)結(jié)構(gòu)是稱(chēng)為ndarray的n維數(shù)組對(duì)象,,這個(gè)對(duì)象由兩部分構(gòu)成:
  • 元數(shù)據(jù)部分:存儲(chǔ)的是當(dāng)前這個(gè)ndarray對(duì)象的一些描述信息,;
  • 真實(shí)數(shù)據(jù)部分:存儲(chǔ)的是當(dāng)前這個(gè)ndarray對(duì)象中的真實(shí)數(shù)據(jù)。

1)什么是ndarray數(shù)組對(duì)象的描述信息呢,?

圖片

注意:上述圖中的shape,、size、dtype,、ndim等都是x這個(gè)ndarray對(duì)象的描述信息,,這些信息都存儲(chǔ)在元數(shù)據(jù)區(qū)域。而1,,2,,3,4,,5,,6就是這個(gè)對(duì)象中的真實(shí)數(shù)據(jù)。

4,、ndarray數(shù)組和list列表的簡(jiǎn)單對(duì)比


① ndarray數(shù)組和list中的數(shù)據(jù)類(lèi)型

list列表中可以存儲(chǔ)不同的數(shù)據(jù)類(lèi)型,,例如:x = [1,2.3,True,“中國(guó)”],。ndarray數(shù)組中存儲(chǔ)的所有的元素的類(lèi)型,,都必須一致,。

② 使用numpy創(chuàng)建數(shù)組和使用原生list的效率對(duì)比

圖片

③ 使用ndarray創(chuàng)建數(shù)組的好處

既然ndarray中,每個(gè)元素的類(lèi)型既然是一致的,,那么整個(gè)ndaray就只需要一個(gè)元數(shù)據(jù)信息就可以了,,而不是像list一樣,每個(gè)對(duì)象都需要存儲(chǔ)一個(gè)元數(shù)據(jù)信息,。

ndarray好處在于:1,、由于元數(shù)據(jù)只需要存儲(chǔ)一份,所以可以更節(jié)省空間,。2,、由于每個(gè)元素的類(lèi)型一致,就證明每個(gè)元素占用內(nèi)存的大小是一致的,,那么這樣的數(shù)據(jù)的存儲(chǔ)可以更緊湊,,操作更高效。

5,、什么是維度,?


① 用一個(gè)例子進(jìn)行說(shuō)明

圖片

② 一張圖形象說(shuō)明一維數(shù)組、二維數(shù)組,、三維數(shù)組的ndarray寫(xiě)法

圖片

③ 針對(duì)上述知識(shí)點(diǎn)進(jìn)行舉例說(shuō)明
圖片

6,、創(chuàng)建數(shù)組的幾種不同方式


1)利用array()函數(shù)去創(chuàng)建數(shù)組;

操作如下
import numpy as np

array1 = [1,2,3]
m = np.array(array1)
display(m)

array2 = [[1,2,3],[4,5,6]]
n = np.array(array2)
display(n)
結(jié)果如下:
圖片

結(jié)論如下:

  • np.array(參數(shù))函數(shù),,參數(shù)給了什么樣式的數(shù)據(jù),,就構(gòu)建什么樣式的ndarray數(shù)組;你給我一個(gè)一維列表,,我就構(gòu)建一個(gè)一維數(shù)組,;你給我一個(gè)二維列表,我就構(gòu)建一個(gè)二維數(shù)組,;
  • 什么是二維列表,?每個(gè)元素都是一個(gè)一維列表的列表,就是一個(gè)二維列表,;
  • 如果我構(gòu)建了一個(gè)二維列表,,那么這個(gè)二維列表中的每個(gè)元素就都是一個(gè)一維列表;
  • 在numpy中,,一維數(shù)組又叫做"向量",;二維數(shù)組又叫做"矩陣";

2)利用arange()函數(shù)去創(chuàng)建數(shù)組:對(duì)比列表的range()函數(shù)學(xué)習(xí),;

① 相同點(diǎn):用法都是相同的
# 語(yǔ)法如下:
range(start,end,step)
arange(start,end,step)
# 舉例如下:
list1 = list(range(1,10,2))
display(list1)
array1 = np.arange(1,10,2)
display(array1)
結(jié)果如下:
圖片

② 不同點(diǎn):arange()函數(shù)的步長(zhǎng),,可以是浮點(diǎn)數(shù),但是range()函數(shù)的步長(zhǎng),不能是浮點(diǎn)數(shù)
list1 = list(range(1,10,2))
display(list1)
list2 = list(range(1,10,0.5))
display(list2)
list3 = list(range(10,1,-2))
display(list3)

array1 = np.arange(1,10,2)
display(array1)
array2 = np.arange(1,10,0.5)
display(array2)
array3 = np.arange(10,1,-2)
display(array4)
結(jié)果如下:
圖片
圖片

3)利用指定值生成指定形狀的數(shù)組,;

① 常用函數(shù)如下

  • np.zeros((x,y)):生成一個(gè)x行y列的,元素都是0的二維數(shù)組,;
  • np.ones((x,y)):生成一個(gè)x行y列的,,元素都是1的二維數(shù)組;
  • np.full((x,y),value):生成一個(gè)x行y列的,,元素都是value的二維數(shù)組,,其中這個(gè)value值可以是整數(shù)(正整數(shù),0,負(fù)整數(shù))或者小數(shù);

② 代碼如下
array1 = np.zeros((3,4))
display(array1)

array2 = np.ones((3,4))
display(array2)

array1 = np.full((3,4),1.2)
display(array3)
結(jié)果如下:
圖片

注意:我這里以創(chuàng)建二維數(shù)組為例,,你傳入一個(gè)數(shù)字,,就可以創(chuàng)建一維數(shù)組;你傳入三個(gè)數(shù)字,,就可以創(chuàng)建三維數(shù)組,,可以自己下去試一試。

4)按照已有的ndarray數(shù)組的形狀,,創(chuàng)建形狀相同但指定元素的ndarray數(shù)組,;

① 常用函數(shù)如下
  • np.zeros_like()
  • np.ones_like()
  • np.full_like()
② 操作如下
## 1)先創(chuàng)建一個(gè)一維數(shù)組和一個(gè)二維數(shù)組;
n1 = np.array([1,2,3]);
n2 = np.array([[1,2,3],[4,5,6]])

## 2)使用np.zeros_like()
array1 = np.zeros_like(n1)
array2 = np.zeros_like(n2)
display(array1)
display(array2)

## 3)np.ones_like()
array3 = np.ones_like(n1)
array4 = np.ones_like(n2)
display(array3)
display(array4)

## 4)np.full_like()
array5 = np.full_like(n1)
array6 = np.full_like(n2)
display(array5)
display(array6)
結(jié)果如下:
圖片
圖片
圖片

5)創(chuàng)建單位矩陣和對(duì)角矩陣,;

① 創(chuàng)建單位矩陣
## 1)np.eye(x)和np.identity(x)
array1 = np.eye(3)
display(array1)

array2 = np.identity(4)
display(array2)
結(jié)果如下:
圖片

② 創(chuàng)建對(duì)角矩陣
## 1)np.diag()
array1 = np.diag([10,20,30])
display(array1)
結(jié)果如下:
圖片

6)創(chuàng)建等差數(shù)列數(shù)組:對(duì)比arange()函數(shù)和linspace()函數(shù)學(xué)習(xí),;

① np.arange()和np.linspace()創(chuàng)建等差數(shù)列的區(qū)別

  • np.arange(start,stop,step)第三個(gè)參數(shù)指的是元素步長(zhǎng);
  • np.linspace(start,stop,num)第三個(gè)參數(shù)指的是元素個(gè)數(shù),;
  • np.arange()取不到最大的那個(gè)值stop,,np.linspace()默認(rèn)可以取到最大值stop;

② 用法如下
array1 = np.arange(1,15,3)
display(array1)
display(array1.dtype)

array2 = np.linspace(1,15,3)
display(array2)
display(array2.dtype)
結(jié)果如下:
圖片

③ np.linspace()中兩個(gè)常用的參數(shù):endpoint和dtype

  • endpoint=True表示是包含終止值(默認(rèn)),,endpoint=False表示不包含終止值,;
  • dtype=np.float64指定創(chuàng)建的數(shù)組的數(shù)據(jù)類(lèi)型默認(rèn)是float64,你也可以設(shè)置為dtype=np.np.int32,;
array3 = np.linspace(1,20,num=5,endpoint=False,dtype=np.float64)
display(array3)

array4 = np.linspace(1,20,num=5,endpoint=False,dtype=np.int32)
display(array4)

array5 = np.linspace(1,20,num=5,endpoint=True,dtype=np.float64)
display(array5)

array6 = np.linspace(1,20,num=5,endpoint=True,dtype=np.int32)
display(array6)
結(jié)果如下:
圖片

7)創(chuàng)建等比數(shù)列數(shù)組,;

① 用一個(gè)例子進(jìn)行說(shuō)明
log_array = np.logspace(1, 7, num=4, endpoint=True, base=2)
display(log_array)
結(jié)果如下:
圖片

注意:上述代碼表示在2的一次方到2的七次方之間,生成4個(gè)數(shù),,這四個(gè)數(shù)字還構(gòu)成了一個(gè)等比數(shù)列,。

② 再看另外一個(gè)案例
log_array1 = np.logspace(1, 5, 3)
display(log_array1)
結(jié)果如下:
圖片

注意:上述代碼表示會(huì)默認(rèn)base=10,也就是說(shuō),,在10的一次方到10的五次方之間,,生成3個(gè)數(shù),這3個(gè)數(shù)還構(gòu)成一個(gè)等比數(shù)列,。

8)通過(guò)自定義函數(shù)創(chuàng)建數(shù)組,;
## 1)np.fromfunction()
## 定義一個(gè)函數(shù)
def f(x, y):
return x * 2 + 1 + y

## 從一個(gè)函數(shù)生成一個(gè)二維數(shù)組;
b = np.fromfunction(f, (3,3), dtype=np.int32)
display(b)

## 在這個(gè)函數(shù),f函數(shù)要接收的參數(shù),,就是當(dāng)前元素的坐標(biāo),;
## 0行0列,傳入的就是x=0,y=0;
## 0行1列,,傳入的就是x=0,y=1;
## 3行2列,,傳入的就是x=3,y=2;
結(jié)果如下:
圖片

numpy系列持續(xù)更新中~

圖片


圖片

在看點(diǎn)這里圖片好文分享給更多人↓↓

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多