numpy入門到放棄



datacamp:numpy知識(shí)點(diǎn)



3.look though 這個(gè)np.array




4.? 隨機(jī)創(chuàng)建data


i



目錄


1-7. 入門

8.? ? 創(chuàng)建數(shù)組

9.? ? np.reshape()

10.? ?將多維數(shù)組轉(zhuǎn)為一維數(shù)組

11.? 算術(shù)運(yùn)算

12.?numpy 中數(shù)組和矩陣的區(qū)別



numpy入門

1. numpy的主要操作對(duì)象是同類型的多維數(shù)組。

它是一個(gè)由正整數(shù)元組索引,元素類型相同的表(通常元素是數(shù)字)。在 numpy維度被稱為?axes,?axes?的數(shù)量稱為?rank。

2. numpy的數(shù)組類是ndarray,也可以叫array


3.ndarray.ndim

數(shù)組的?axes?(維數(shù))數(shù)值大小。

4.ndarray.shape

數(shù)組的維數(shù),這是由每個(gè)維度的大小組成的一個(gè)元組。對(duì)于一個(gè) n行 m 列的矩陣。shape?是?(n, m)。由?shape?元組的長(zhǎng)度得出?rank?或者維數(shù)?ndim。

5.ndarray.size

數(shù)組元素的個(gè)數(shù)總和,這等于?shape?元組數(shù)字的乘積。

6.ndarray.dtype

在數(shù)組中描述元素類型的一個(gè)對(duì)象.它是一種可以用標(biāo)準(zhǔn)的python類型創(chuàng)建和指定的類型。eg:numpy.int32,numpy.int16,numpy.float64……

7.ndarray.itemsize

數(shù)組中每個(gè)元素所占字節(jié)數(shù)。

NumPy 官方快速入門教程(譯) - 掘金


8.創(chuàng)建數(shù)組


8.1 用array創(chuàng)建一維數(shù)組

創(chuàng)建的數(shù)組類型是從原始序列中的元素推斷出來(lái)的。


8.2 用array創(chuàng)建高維數(shù)組


數(shù)組類型是從原始序列中的元素推斷出來(lái)的


數(shù)組的類型也能夠在創(chuàng)建時(shí)具體指定

8.3 用占位符創(chuàng)建

8.3.1 np.zeros()

創(chuàng)建一個(gè)全是0的數(shù)組


Q:3維要怎么理解?2個(gè)面? 3維矩陣?

ps: np.zeros_like()生成相同形狀的全0數(shù)組




8.3.2?np.ones

創(chuàng)建全是1的數(shù)組


8.3.3 np.empty()

empty?創(chuàng)建一個(gè)隨機(jī)的數(shù)組。默認(rèn)創(chuàng)建數(shù)組的類型是?float64



8.4 用arrange創(chuàng)建數(shù)組

np.arrange() 來(lái)表示取值范圍


8.5 用np.linspace 來(lái)創(chuàng)建數(shù)組 等差數(shù)列

當(dāng)?arange?的參數(shù)是浮點(diǎn)型的,由于有限的浮點(diǎn)精度,通常不太可能去預(yù)測(cè)獲得元素的數(shù)量。出于這個(gè)原因,通常選擇更好的函數(shù)?linspace,他接收我們想要的元素?cái)?shù)量而不是步長(zhǎng)作為參數(shù)。

類似arange,linspace從[start , stop ] 生成num個(gè)數(shù),Num個(gè)數(shù)間隔相等。(默認(rèn)為float)

linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)


8.6?np.random.rand()隨機(jī)生成取值在(0,1)的數(shù)組


0~1的隨機(jī)數(shù)


8.7 np.random.randit() 產(chǎn)生隨機(jī)整數(shù)

numpy.random.randint(low, high=None, size=None, dtype='l')


8.8?np.random.choice ()

# 參數(shù)意思分別 是從a 中以概率P,隨機(jī)選擇3個(gè), p沒(méi)有指定的時(shí)候相當(dāng)于是一致的分布

a1 = np.random.choice(a=5, size=3, replace=False, p=None)

print(a1)

# 非一致的分布,會(huì)以多少的概率提出來(lái)

a2 = np.random.choice(a=5, size=3, replace=False, p=[0.2, 0.1, 0.3, 0.4, 0.0])

print(a2)

# replacement 代表的意思是抽樣之后還放不放回去,如果是False的話,那么出來(lái)的三個(gè)數(shù)都不一樣,如果是True的話, 有可能會(huì)出現(xiàn)重復(fù)的,因?yàn)榍懊娴某榈姆呕厝チ恕?/p>

https://blog.csdn.net/qfpkzheng/article/details/79061601

8.9?numpy.random.sample

返回一個(gè)隨機(jī)數(shù)組,取值在(0,1)之間

numpy.random.sample(size=None)

參數(shù):

size:?int or tuple of ints, optional 可以是整數(shù)或者元組

Output shape. If the given shape is, e.g.,?(m,?n,?k), then?m?*?n?*?k?samples are drawn

如果size輸入的是元組形式,返回的是多維數(shù)組

numpy.random.sample — NumPy v1.16 Manual

8.10??numpy.random.randn()

numpy.random.randn(d0,d1,…,dn)

randn函數(shù)返回一個(gè)或一組樣本,具有標(biāo)準(zhǔn)正態(tài)分布。

dn表格每個(gè)維度

返回值為指定維度的array


ps:標(biāo)準(zhǔn)正態(tài)分布又稱為u分布,是以0為均值、以1為標(biāo)準(zhǔn)差的正態(tài)分布,記為N(0,1)

https://blog.csdn.net/u012149181/article/details/78913167

8.11 np.logspace()

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

8.12 np.fromstring()


9. 修改數(shù)組的形狀

9.1 np.reshape()?

將一維的數(shù)據(jù)轉(zhuǎn)為多維的


2個(gè)3行4列的數(shù)組

9.2 數(shù)組的轉(zhuǎn)置transposed


9.3 np.resize()

reshape函數(shù)返回修改的形狀,而 resize方法直接修改數(shù)組本身。



10.將多維數(shù)組轉(zhuǎn)為一維數(shù)組np.ravel()? ? ?np.flatten()? ? ? ?np.squeeze()

numpy中的ravel()、flatten()、squeeze()都有將多維數(shù)組轉(zhuǎn)換為一維數(shù)組的功能,區(qū)別:

ravel():如果沒(méi)有必要,不會(huì)產(chǎn)生源數(shù)據(jù)的副本

flatten():返回源數(shù)據(jù)的副本

squeeze():只能對(duì)維數(shù)為1的維度降維

另外,reshape(-1)也可以“拉平”多維數(shù)組


11.numpy中的算數(shù)計(jì)算

11.1 四則運(yùn)算

+’,’-‘,’*’,’/’運(yùn)算都是基于全部的數(shù)組元素的


11.1.1 * vs np.dot() vs np.multiply()? 不同 見13

https://blog.csdn.net/zenghaitao0128/article/details/78715140


11.2?開根號(hào)/指數(shù)??universal functions??

還包含 sin cos?



11.3 += 和 *=

直接在原數(shù)組上做修改,不會(huì)創(chuàng)建新數(shù)組。


11.4 聚合運(yùn)算

還有mean() median()


ps:?numpy.ptp(a, axis=None, out=None)? ?返回最大和最小值之差


11.5 二元ufunc

11.6 數(shù)組的集合運(yùn)算


《利用python進(jìn)行數(shù)據(jù)分析》


11.7 numpy.linalg() 常用計(jì)算函數(shù)




12. numpy 中數(shù)組和矩陣的區(qū)別

1. Numpy matrices必須是2維的,但是 numpy arrays (ndarrays) 可以是多維的(1D,2D,3D····ND). Matrix是Array的一個(gè)小的分支,包含于Array。所以matrix 擁有array的所有特性。

2. 在numpy中matrix的主要優(yōu)勢(shì)是:相對(duì)簡(jiǎn)單的乘法運(yùn)算符號(hào)。例如,a和b是兩個(gè)matrices,那么a*b,就是矩陣積。

3. matrix 和 array 都可以通過(guò)objects后面加.T 得到其轉(zhuǎn)置。但是 matrix objects 還可以在后面加 .H f得到共軛矩陣, 加 .I 得到逆矩陣。

4. 相反的是在numpy里面arrays遵從逐個(gè)元素的運(yùn)算,所以array:c 和d的c*d運(yùn)算相當(dāng)于matlab里面的c.*d運(yùn)算。而矩陣相乘,則需要numpy里面的dot命令 。

https://blog.csdn.net/wyl1813240346/article/details/79806207


13.?* vs np.dot() vs np.multiply()? 區(qū)別

數(shù)組的?*?操作不像其他的矩陣語(yǔ)言。矩陣乘法通過(guò)?dot?函數(shù)進(jìn)行模擬

13.1 np.multiply()用法

數(shù)組和矩陣對(duì)應(yīng)位置相乘,輸出與相乘數(shù)組/矩陣的大小一致


13.1.1 數(shù)組


13.1.2 矩陣


13.2 np.dot() 用法

對(duì)于秩為1的數(shù)組,執(zhí)行對(duì)應(yīng)位置相乘,然后再相加;

對(duì)于秩不為1的二維數(shù)組,執(zhí)行矩陣乘法運(yùn)算;超過(guò)二維的可以參考numpy庫(kù)介紹。


13.2.1 一維數(shù)組

13.2.2 二維數(shù)組


13.3 * 的用法

對(duì)數(shù)組執(zhí)行對(duì)應(yīng)位置相乘

對(duì)矩陣執(zhí)行矩陣乘法運(yùn)算


13.3.1 數(shù)組 *

13.3.2 矩陣


14.?索引,切片和迭代

14.1 一維數(shù)組

一維數(shù)組可以被索引,切片和迭代,就像列表和其他Python序列一樣。




14.2 二維數(shù)組



14.3 多維數(shù)組 三維數(shù)組 用... 查詢數(shù)組



15. 數(shù)組的組合拼接

使用hstack 橫向拼接

使用vstack 縱向拼接



16.數(shù)組的拷貝

不同的數(shù)組對(duì)象可以分享相同的數(shù)據(jù)。view?方法創(chuàng)建了一個(gè)相同數(shù)據(jù)的新數(shù)組對(duì)象。 淺拷貝

想要真正的復(fù)制一份a給b,可以使用copy.? 深拷貝



17.numpy中的函數(shù)



18. numpy中的矩陣

矩陣與數(shù)組有不同,矩陣最多是2維的


18.1 矩陣的創(chuàng)建

18.2 矩陣的乘法

np.multiply()

(*)


18.3 矩陣的轉(zhuǎn)置 .T()

18.4 矩陣求逆nlg.inv()


18.5 特征向量

ps:忘記特征向量怎么求了?

先占著坑

pass


19. np.meshgrid()用法

meshgrid(*xi, **kwargs)

功能:從一個(gè)坐標(biāo)向量中返回一個(gè)坐標(biāo)矩陣


20.np.cumsum()

numpy.cumsum(a, axis=None, dtype=None, out=None)

axis=0,按照行累加。

axis=1,按照列累加。

axis不給定具體值,就把numpy數(shù)組當(dāng)成一個(gè)一維數(shù)組。


自動(dòng)轉(zhuǎn)換成一維數(shù)組,按照行累加

21.np.where()用法

21.1 np.where(condition, x, y)

滿足條件(condition),輸出x,不滿足輸出y。



21.2?np.where(condition)

只有條件 (condition),沒(méi)有x和y,則輸出滿足條件 (即非0) 元素的坐標(biāo) (等價(jià)于numpy.nonzero)。這里的坐標(biāo)以tuple的形式給出,通常原數(shù)組有多少維,輸出的tuple中就包含幾個(gè)數(shù)組,分別對(duì)應(yīng)符合條件元素的各維坐標(biāo)。


21.3 利用where 修改數(shù)組的值


22.利用set去重?




23.?np.concatenate

numpy.concatenate((a1,?a2,?...),?axis=0,?out=None)




24. np.meshgrid()

meshgrid(*xi, **kwargs)

從一個(gè)坐標(biāo)向量中返回一個(gè)坐標(biāo)矩陣

參數(shù):

x1,x2...,xn:數(shù)組,一維的數(shù)組代表網(wǎng)格的坐標(biāo)。

indexing:{'xy','ij'},笛卡爾坐標(biāo)'xy'或矩陣'ij'下標(biāo)作為輸出,默認(rèn)的是笛卡爾坐標(biāo)。

sparse:bool類型,如果為True,返回一個(gè)稀疏矩陣保存在內(nèi)存中,默認(rèn)是False。

copy:bool類型,如果是False,返回一個(gè)原始數(shù)組的視圖保存在內(nèi)存中,默認(rèn)是True。如果,sparse和copy都為False,將有可能返回一個(gè)不連續(xù)的數(shù)組。而且,如果廣播數(shù)組的元素超過(guò)一個(gè),可以使用一個(gè)獨(dú)立的內(nèi)存。如果想要對(duì)這個(gè)數(shù)組進(jìn)行寫操作,請(qǐng)先拷貝這個(gè)數(shù)組。

返回值:x1,x2,....,xn:ndarray(numpy數(shù)組)

numpy中的meshgrid函數(shù) - 修煉之路 - CSDN博客





reference:

NumPy 官方快速入門教程(譯) - 掘金

python 科學(xué)計(jì)算 — numpy 學(xué)習(xí)筆記 - 細(xì)語(yǔ)呢喃

https://blog.csdn.net/sinat_29957455/article/details/78825945

https://blog.csdn.net/feng_jlin/article/details/82790746

https://www.cnblogs.com/massquantity/p/8908859.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容