Numpy數(shù)據(jù)存取與常用函數(shù)

一:前言

繼續(xù)做Nmupy模塊的學習筆記蜕青,這次是numpy的數(shù)據(jù)存取與常用的一些函數(shù)學習使用記錄,這些函數(shù)都將為以后的數(shù)據(jù)操作打下基礎(chǔ)横蜒。涉及到的有存取函數(shù)叙淌、強大隨機函數(shù)秤掌、統(tǒng)計函數(shù)和梯度函數(shù)。目的:掌握表示鹰霍、清洗闻鉴、統(tǒng)計和展示數(shù)據(jù)的基礎(chǔ)能力

二:CSV文件的存取

1. 逗號分隔值

Comma-Separated Values,CSV茂洒,有時也稱為字符分隔值孟岛,因為分隔字符也可以不是逗號,其文件以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本)督勺。

2. 保存CSV文件

** np.savetxt(frame, array, fmt='%.18e', delimiter=None)**

  • frame : 文件渠羞、字符串或產(chǎn)生器,可以是.gz或.bz2的壓縮文件
  • array : 存入文件的數(shù)組
  • fmt : 寫入文件的格式智哀,例如:%d %.2f %.18e
  • delimiter : 分割字符串次询,默認是任何空格
a1 = np.arange(100).reshape(5, 20)
np.savetxt('a1.csv', a1, fmt = '%d', delimiter=',')

a2 = np.arange(100).reshape(5, 20)
np.savetxt('a2.csv', a2, fmt = '%.1f', delimiter=',')

3. 讀取CSV文件

np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)

  • frame : 文件瓷叫、字符串或產(chǎn)生器屯吊,可以是.gz或.bz2的壓縮文件
  • dtype : 數(shù)據(jù)類型,可選
  • delimiter : 分割字符串摹菠,默認是任何空格
  • unpack : 如果True盒卸,讀入屬性將分別寫入不同變量
b1 = np.loadtxt('a1.csv', delimiter=',')
print(b1)
b2 = np.loadtxt('a2.csv', dtype=np.int, delimiter=',')
print(b2)

4. CSV文件存取的局限性

CSV只能有效存儲一維和二維數(shù)組
那么np.savetxt() np.loadtxt()只能有效存取一維和二維數(shù)組

三:多維數(shù)據(jù)的存取

1. 多維數(shù)據(jù)的保存

a.tofile(frame, sep='', format='%s')

  • frame : 文件、字符串
  • sep : 數(shù)據(jù)分割字符串次氨,如果是空串蔽介,寫入文件為二進制
  • format : 寫入數(shù)據(jù)的格式

如果是寫入二進制則更節(jié)省硬盤空間,所以在以存儲為目的即可使用這種方式煮寡;如果為了方便閱讀則可以加入分割字符串以字符串的形式保存文件虹蓄。

a = np.arange(100).reshape(5, 10, 2)
a.tofile('b.dat', sep=',', format='%d')
# 保存的數(shù)據(jù)是全部的數(shù)據(jù),但是沒有了維度信息
a.tofile('c.dat', format='%d')
# 沒有分隔符幸撕,以二進制保存薇组,使用文本編輯器打開是亂碼的。

2. 多維數(shù)據(jù)的讀取

np.fromfile(frame, dtype=float, count=‐1, sep='')

  • frame : 文件杈帐、字符串
  • dtype : 讀取的數(shù)據(jù)類型
  • count : 讀入元素個數(shù),‐1表示讀入整個文件
  • sep : 數(shù)據(jù)分割字符串专钉,如果是空串挑童,寫入文件為二進制
a1 = np.fromfile('b.dat', dtype=np.int, sep=',').reshape(5, 10, 2)
print(a1)
a2 = np.fromfile('c.bat', dtype=np.int).reshape(5, 10, 2)
print(a2)

該方法需要讀取時知道存入文件時數(shù)組的維度和元素類型
a.tofile()和np.fromfile()需要配合使用
可以通過元數(shù)據(jù)文件來存儲額外信息

四:Nmupy的便捷文件存取

np.save(fname, array) 或 np.savez(fname, array)

  • fname : 文件名,以.npy為擴展名跃须,壓縮擴展名為.npz
  • array : 數(shù)組變量

np.load(fname)

  • fname : 文件名站叼,以.npy為擴展名,壓縮擴展名為.npz
a = np.arange(100).reshape(5, 10, 2)
np.save('a.npy', a)
b = np.load('a.npy')
print(b)

打開a文件就可以看到菇民,這里保存著二進制的數(shù)據(jù)和維度的信息尽楔,存儲和讀取都十分方便投储。

五:Nmupy的隨機函數(shù)

1. 隨機函數(shù)①:

函數(shù) 說明
rand(d0,d1,..,dn) 根據(jù)d0‐dn創(chuàng)建隨機數(shù)數(shù)組,浮點數(shù)阔馋,[0,1)玛荞,均勻分布
randn(d0,d1,..,dn) 根據(jù)d0‐dn創(chuàng)建隨機數(shù)數(shù)組,標準正態(tài)分布
randint(low[,high,shape]) 根據(jù)shape創(chuàng)建隨機整數(shù)或整數(shù)數(shù)組呕寝,范圍是[low, high)
seed(s) 隨機數(shù)種子勋眯,s是給定的種子值
a1 = np.random.rand(3, 4, 5)
print(a1)

a2 = np.random.randn(3, 4, 5)
print(a2)
a3 = np.random.randint(100, 200, (3, 4))
print(a3)

2. 隨機函數(shù)②:

函數(shù) 說明
shuffle(a) 根據(jù)數(shù)組a的第1軸進行隨排列,改變數(shù)組x
permutation(a) 根據(jù)數(shù)組a的第1軸產(chǎn)生一個新的亂序數(shù)組下梢,不改變數(shù)組x
choice(a[,size,replace,p]) 從一維數(shù)組a中以概率p抽取元素客蹋,形成size形狀新數(shù)組replace表示是否可以重用元素,默認為False
a1 = np.random.randint(100, 200, (3, 4))
print(a1)
np.random.shuffle(a1)
print(a1)

shuffle() 改變了原來的數(shù)組


Paste_Image.png
b = np.random.randint(100, 200, (3, 4))
print(b)
np.random.permutation(b)
print(b)

permutation() 沒有改變原來的數(shù)組

3. 隨機函數(shù)③:

函數(shù) 說明
uniform(low,high,size) 產(chǎn)生具有均勻分布的數(shù)組,low起始值,high結(jié)束值,size形狀
normal(loc,scale,size) 產(chǎn)生具有正態(tài)分布的數(shù)組,loc均值,scale標準差,size形狀
poisson(lam,size) 產(chǎn)生具有泊松分布的數(shù)組,lam隨機事件發(fā)生率,size形狀

六: Numpy的統(tǒng)計函數(shù)

1. 統(tǒng)計函數(shù)①:

函數(shù) 說明
sum(a, axis=None) 根據(jù)給定軸axis計算數(shù)組a相關(guān)元素之和孽江,axis整數(shù)或元組
mean(a, axis=None) 根據(jù)給定軸axis計算數(shù)組a相關(guān)元素的期望讶坯,axis整數(shù)或元組
average(a,axis=None,weights=None) 根據(jù)給定軸axis計算數(shù)組a相關(guān)元素的加權(quán)平均值
std(a, axis=None) 根據(jù)給定軸axis計算數(shù)組a相關(guān)元素的標準差
var(a, axis=None) 根據(jù)給定軸axis計算數(shù)組a相關(guān)元素的方差

axis=None 是統(tǒng)計函數(shù)的標配參數(shù)

2. 統(tǒng)計函數(shù)②:

函數(shù) 說明
min(a) max(a) 計算數(shù)組a中元素的最小值、最大值
argmin(a) argmax(a) 計算數(shù)組a中元素最小值岗屏、最大值的降一維后下標
unravel_index(index, shape) 根據(jù)shape將一維下標index轉(zhuǎn)換成多維下標
ptp(a) 計算數(shù)組a中元素最大值與最小值的差
median(a) 計算數(shù)組a中元素的中位數(shù)(中值)

七:梯度函數(shù)

函數(shù) 說明
np.gradient(f) 計算數(shù)組f中元素的梯度辆琅,當f為多維時,返回每個維度梯度

梯度:連續(xù)值之間的變化率担汤,即斜率
XY坐標軸連續(xù)三個X坐標對應的Y軸值:a, b, c涎跨,其中,b的梯度是: (c‐a)/2

八:單元小結(jié)

CSV文件
np.loadtxt()
np.savetxt()
多維數(shù)據(jù)存取
a.tofile() np.fromfile()
np.save() np.savez() np.load()
隨機函數(shù)
np.random.rand() np.random.randn()
np.random.randint() np.random.seed()
np.random.shuffle() np.random.permutation()
np.random.choice()
NumPy的統(tǒng)計函數(shù)
np.sum() np.min()
np.mean() np.max()
np.average() np.argmin()
np.std() np.argmax()
np.var() np.unravel_index()
np.median() np.ptp()
NumPy的梯度函數(shù)
np.gradient()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末崭歧,一起剝皮案震驚了整個濱河市隅很,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌率碾,老刑警劉巖叔营,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異所宰,居然都是意外死亡绒尊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門仔粥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來婴谱,“玉大人,你說我怎么就攤上這事躯泰√犯幔” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵麦向,是天一觀的道長瘟裸。 經(jīng)常有香客問我,道長诵竭,這世上最難降的妖魔是什么话告? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任兼搏,我火速辦了婚禮,結(jié)果婚禮上沙郭,老公的妹妹穿的比我還像新娘佛呻。我一直安慰自己,他們只是感情好棠绘,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布件相。 她就那樣靜靜地躺著,像睡著了一般氧苍。 火紅的嫁衣襯著肌膚如雪夜矗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天让虐,我揣著相機與錄音紊撕,去河邊找鬼。 笑死赡突,一個胖子當著我的面吹牛对扶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惭缰,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼浪南,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了漱受?” 一聲冷哼從身側(cè)響起络凿,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎昂羡,沒想到半個月后絮记,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡虐先,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年怨愤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛹批。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡撰洗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出腐芍,到底是詐尸還是另有隱情差导,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布甸赃,位于F島的核電站柿汛,受9級特大地震影響冗酿,放射性物質(zhì)發(fā)生泄漏埠对。R本人自食惡果不足惜络断,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望项玛。 院中可真熱鬧貌笨,春花似錦、人聲如沸襟沮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽开伏。三九已至膀跌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間固灵,已是汗流浹背捅伤。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留巫玻,地道東北人丛忆。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像仍秤,于是被迫代替她去往敵國和親熄诡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容