python經(jīng)常作為機(jī)器學(xué)習(xí)的首選,有一個(gè)統(tǒng)計(jì)由捎,50%以上的機(jī)器學(xué)習(xí)開(kāi)發(fā)者使用python。在學(xué)習(xí)機(jī)器學(xué)習(xí)之前需要熟悉以下幾個(gè)python模塊:
- numpy
Python沒(méi)有提供數(shù)組槐臀,列表(List)可以完成數(shù)組蜡峰,但不是真正的數(shù)組,當(dāng)數(shù)據(jù)量增大時(shí)最筒,它的速度很慢贺氓。所以Numpy擴(kuò)展包提供了數(shù)組支持,同時(shí)很多高級(jí)擴(kuò)展包依賴(lài)它床蜘。是以矩陣為基礎(chǔ)的數(shù)學(xué)計(jì)算模塊辙培,純數(shù)學(xué)蔑水。 - SciPy
SciPy是數(shù)學(xué),科學(xué)和工程的開(kāi)源軟件扬蕊。 它包括用于統(tǒng)計(jì)搀别,優(yōu)化,集成尾抑,線(xiàn)性代數(shù)歇父,傅里葉變換,信號(hào)和圖像處理再愈,ODE解算器等的模塊榜苫。SciPy庫(kù)依賴(lài)于NumPy,提供方便快捷的N維數(shù)組操作践磅。比方說(shuō)做個(gè)傅立葉變換单刁,這是純數(shù)學(xué)的,用Numpy府适;做個(gè)濾波器羔飞,這屬于信號(hào)處理模型了,在Scipy里找檐春。 - pandas
Pandas提供了一套名為DataFrame的數(shù)據(jù)結(jié)構(gòu)逻淌,比較契合統(tǒng)計(jì)分析中的表結(jié)構(gòu),并且提供了計(jì)算接口疟暖,可用Numpy或其它方式進(jìn)行計(jì)算卡儒。 - matplotlib & seaborn
該包主要用于繪圖和繪表,強(qiáng)大的數(shù)據(jù)可視化工具俐巴,做圖庫(kù)骨望。
現(xiàn)在我們開(kāi)始熟悉numpy的常用操作函數(shù):
** 一維數(shù)組 **
#encoding=utf8
import numpy as np
# 定義一維數(shù)組
a = np.array([2, 0, 1, 5, 8, 3])
print u'原始數(shù)據(jù):', a
#輸出最大、最小值及形狀
print u'最小值:', a.min()
print u'最大值:', a.max()
print u'形狀', a.shape
# 數(shù)據(jù)切片
print u'切片操作:'
# [:-2]后面兩個(gè)兩個(gè)值不取
print a[:-2]
#[-2:]表示后往前數(shù)兩個(gè)數(shù)字欣舵,獲取數(shù)字至結(jié)尾
print a[-2:]
#[:1]表示從頭開(kāi)始獲取擎鸠,獲取1個(gè)數(shù)字
print a[:1]
# 排序
print type(a)
print a.dtype
a.sort()
print u'排序后:', a
運(yùn)行結(jié)果
原始數(shù)據(jù): [2 0 1 5 8 3]
最小值: 0
最大值: 8
形狀 (6,)
切片操作:
[2 0 1 5]
[8 3]
[2]
<type 'numpy.ndarray'>
int32
排序后: [0 1 2 3 5 8]
二維數(shù)組
#二維數(shù)組操作
c = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]])
# 獲取值
print u'形狀:', c.shape
print u'獲取值:', c[1][0]
print u'獲取某行:'
print c[1][:]
print u'獲取某行并切片:'
print c[0][:-1]
print c[0][-1:]
#獲取具體某列值
print u'獲取第3列:'
#np.newaxis增加一個(gè)新維度
print c[:,np.newaxis, 2]
#函數(shù)
#sin
print np.sin(np.pi/6)
print np.sin(np.pi/2)
print np.tan(np.pi/2)
print np.arange(0,4)
運(yùn)行結(jié)果
形狀: (3, 4)
獲取值: 4
獲取某行:
[4 5 6 7]
獲取某行并切片:
[1 2 3]
[4]
獲取第3列:
[[3]
[6]
[9]]
0.5
1.0
1.63312393532e+16
[0 1 2 3]
注意,axis在numpy中表示第n個(gè)索引一個(gè)數(shù)組缘圈,在多維數(shù)組中劣光,每個(gè)axis有一個(gè)索引,比如a = np.array([[1,2],[3,4]])糟把,a[1,0] # to index
a, we specific 1 at the first axis and 0 at the second axis.
文中涉及源代碼參見(jiàn) github