- 在某些方面圈澈,Numpy數(shù)組與Python內(nèi)置的list列表類型非常相似,是Python數(shù)據(jù)科學(xué)的核心工具按价;
- numpy一維數(shù)組可以理解為向量惭适,二維數(shù)組即是數(shù)據(jù)框(更準(zhǔn)確來說,對(duì)應(yīng)R里的matrix矩陣)....楼镐;
- numpy數(shù)組與python里的list列表最大的不同是前者需包含同一種數(shù)據(jù)類型才行癞志,后者則沒有此限制。
-
本文將學(xué)習(xí)numpy數(shù)組的一些基礎(chǔ)操作:創(chuàng)建數(shù)組框产、取數(shù)組子集凄杯、數(shù)組維度變換、數(shù)組的合并與拆分
pip install numpy
ipython
#進(jìn)入ipython環(huán)境
import numpy as np
1秉宿、創(chuàng)建數(shù)組
-
np.array()
:最直接的方式
#一維數(shù)組
x1 = np.array([1,2,3])
x1.shape
# (3,) 表示長(zhǎng)度為3的一維向量
#二維數(shù)組
x2 = np.array([[1,3,5],[11,12,13]])
x2.shape
# (2,3) 表示兩行三列的二維數(shù)組矩陣
1.1 固定取值
-
np.zeros(n, dtype=int)
創(chuàng)建長(zhǎng)度為n戒突,值全為0的整型的一維數(shù)組 -
np.ones((a,b), dtype=float)
創(chuàng)建a行b列,值全為1的浮點(diǎn)型的二維數(shù)組 -
np.full((a,b),x, dtype=int/float)
創(chuàng)建a行b列描睦,值全為x的二維數(shù)組
np.full((3,3),1.11)
# array([[1.11, 1.11, 1.11],
# [1.11, 1.11, 1.11],
# [1.11, 1.11, 1.11]])
1.2 規(guī)律分布
-
np.arange()
等差數(shù)列
-
np.random.randint()
隨機(jī)整數(shù)
-
np.random.random(10)
長(zhǎng)度為10膊存,符合0~1均勻分布的一維數(shù)組 -
np.random.normal(0, 1, c(2,3))
兩行三列的,符合均值為0忱叭,標(biāo)準(zhǔn)差為1正態(tài)分布的二維數(shù)組
2隔崎、數(shù)組取子集
2.1 索引從0開始
參看下圖
- 類似python的list取子集方式,numpy數(shù)組的索引也是從0開始窑多;
-
負(fù)數(shù)的索引可以理解為倒數(shù)第n個(gè)值。
2.2 取單個(gè)值的子集
- 直接按坐標(biāo)索引查看即可
2.3 切片[a:b:c]--左閉(包括)右開(不包括)加步長(zhǎng)
- 對(duì)于長(zhǎng)度為10的一維數(shù)組x1,
x1[0:5]
表示索引0到索引4的子集(不包括索引5)洼滚,默認(rèn)步長(zhǎng)為1
埂息; - a為0時(shí),可省略遥巴;a千康,b均省略時(shí),則表示全集铲掐;
- 步長(zhǎng)為負(fù)數(shù)時(shí)拾弃,表示逆序取子集
- 對(duì)于二維數(shù)組,也是類似的取法摆霉。
x2[a:b豪椿,c:d]
x2[2,:]
:表示取第3行;x2[:,0]
:表示取第1列
2.3 列表(多個(gè))索引值取子集
2.4 邏輯布爾值取子集
- AND:
&
携栋、OR:|
搭盾、NOT:~
關(guān)于數(shù)組子集的聯(lián)動(dòng)性
-
若將一個(gè)數(shù)組的子集賦予給一個(gè)新對(duì)象,那么當(dāng)這個(gè)新對(duì)象發(fā)生變化時(shí)婉支,原始數(shù)組也會(huì)發(fā)生相應(yīng)變化鸯隅。如下圖操作所示--
-
copy()
方法可創(chuàng)建不相關(guān)聯(lián)的子集副本
3、數(shù)組維度變換
- 矩陣轉(zhuǎn)置
T()
方法:行列轉(zhuǎn)換
- 維度轉(zhuǎn)換
reshaple()
方法:按照希望的可執(zhí)行的維度結(jié)果轉(zhuǎn)換
4向挖、數(shù)組的合并與拆分
4.1 數(shù)組合并
-
concatenate()
可連接兩個(gè)一維數(shù)組蝌以,或者按行/列合并兩個(gè)二維數(shù)組炕舵。
-
vstack()
縱向合并兩個(gè)數(shù)組,只要這兩個(gè)數(shù)組的列數(shù)相同
-
hstack()
橫向合并兩個(gè)數(shù)組跟畅,只要這兩個(gè)數(shù)組的行數(shù)相同
4.2 數(shù)組拆分
split()
拆分一維數(shù)組咽筋,參數(shù)的索引值指定分裂點(diǎn)的位置-
當(dāng)函數(shù)結(jié)果返回多個(gè)對(duì)象時(shí),在等號(hào)前就要設(shè)置相應(yīng)個(gè)數(shù)的對(duì)象名
-
vsplit()
:橫向拆分一個(gè)二維數(shù)組(上下)碍彭;同理hsplit()
:縱向拆分一個(gè)二維數(shù)組
數(shù)組拆分(左右)