① 如何用python解析mnist
1.我們首先看一下mnist的數據結構:
2.
可以看出在train-images.idx3-ubyte中,第一個數為32位的整數(魔數,圖片類型的數),第二個數為32位的整數(圖片的個數),第三和第四個也是32為的整數(分別代表圖片的行數和列數),接下來的都是一個位元組的無符號數(即像素,值域為0~255),因此,我們只需要依次獲取魔數和圖片的個數,然後獲取圖片的長和寬,最後逐個像素讀取就可以了。
3.如何使用Python解析數據呢? 首先需要安裝python的圖形處理庫PIL,這個庫支持像素級別的圖像處理,對於學習數字圖像處理有很大的幫助。安裝完成之後,就可以進行圖像的解析了。看一下代碼:
4.首先打開文件,然後分別讀取魔數,圖片個數,以及行數和列數,在struct中,可以看到,使用了』>IIII』,這是什麼意思呢?意思就是使用大端規則,讀取四個整形數(Integer),如果要讀取一個位元組,則可以用』>B』(當然,這里用沒用大端規則都是一樣的,因此只有兩個或兩個以上的位元組才有用)。
5.什麼是大端規則呢?不懂的可以網路一下,這個不再贅述(http://ke..com/link?url=Bgg8b0vRr3b_SeGyOl8U4DmAbIQT9swGuNtD_21ctEI_NliqsQ-mKF73YT90EILF2EQy50mEua_M4z6Cma3rmK)
6.然後對於每張圖片,先創建一張空白的圖片,其中的』L』代表這張圖片是灰度圖,最後逐個像素讀取,然後寫進空白圖片里,最後保存圖片,就可以了
7.再來看一下mnist標簽的數據結構:
可以發現,與上面的非常相似,只不過這里每一個位元組變成了標簽而已(標簽大小為0~9)
8.好了,通過上述講解,最後我們可以通過python將mnist解析出來了,看一下效果:
程序源代碼如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PIL import Image
import struct
def read_image(filename):
f = open(filename, 'rb')
index = 0
buf = f.read()
f.close()
magic, images, rows, columns = struct.unpack_from('>IIII' , buf , index)
index += struct.calcsize('>IIII')
for i in xrange(images):
#for i in xrange(2000):
image = Image.new('L', (columns, rows))
for x in xrange(rows):
for y in xrange(columns):
image.putpixel((y, x), int(struct.unpack_from('>B', buf, index)[0]))
index += struct.calcsize('>B')
print 'save ' + str(i) + 'image'
image.save('test/' + str(i) + '.png')
def read_label(filename, saveFilename):
f = open(filename, 'rb')
index = 0
buf = f.read()
f.close()
magic, labels = struct.unpack_from('>II' , buf , index)
index += struct.calcsize('>II')
labelArr = [0] * labels
#labelArr = [0] * 2000
for x in xrange(labels):
#for x in xrange(2000):
labelArr[x] = int(struct.unpack_from('>B', buf, index)[0])
index += struct.calcsize('>B')
save = open(saveFilename, 'w')
save.write(','.join(map(lambda x: str(x), labelArr)))
save.write('\n')
save.close()
print 'save labels success'
if __name__ == '__main__':
read_image('t10k-images.idx3-ubyte')
read_label('t10k-labels.idx1-ubyte', 'test/label.txt')
② python大數據挖掘系列之基礎知識入門 知識整理(入門教程含源碼)
Python在大數據行業非常火爆近兩年,as a pythonic,所以也得涉足下大數據分析,下面就聊聊它們。
Python數據分析與挖掘技術概述
所謂數據分析,即對已知的數據進行分析,然後提取出一些有價值的信息,比如統計平均數,標准差等信息,數據分析的數據量可能不會太大,而數據挖掘,是指對大量的數據進行分析與挖倔,得到一些未知的,有價值的信息等,比如從網站的用戶和用戶行為中挖掘出用戶的潛在需求信息,從而對網站進行改善等。
數據分析與數據挖掘密不可分,數據挖掘是對數據分析的提升。數據挖掘技術可以幫助我們更好的發現事物之間的規律。所以我們可以利用數據挖掘技術可以幫助我們更好的發現事物之間的規律。比如發掘用戶潛在需求,實現信息的個性化推送,發現疾病與病狀甚至病與葯物之間的規律等。
預先善其事必先利其器
我們首先聊聊數據分析的模塊有哪些:
下面就說說這些模塊的基礎使用。
numpy模塊安裝與使用
安裝:
下載地址是:http://www.lfd.uci.e/~gohlke/pythonlibs/
我這里下載的包是1.11.3版本,地址是:http://www.lfd.uci.e/~gohlke/pythonlibs/f9r7rmd8/numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl
下載好後,使用pip install "numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl"
安裝的numpy版本一定要是帶mkl版本的,這樣能夠更好支持numpy
numpy簡單使用
生成隨機數
主要使用numpy下的random方法。
pandas
使用 pip install pandas 即可
直接上代碼:
下面看看pandas輸出的結果, 這一行的數字第幾列,第一列的數字是行數,定位一個通過第一行,第幾列來定位:
常用方法如下:
下面看看pandas對數據的統計,下面就說說每一行的信息
轉置功能:把行數轉換為列數,把列數轉換為行數,如下所示:
通過pandas導入數據
pandas支持多種輸入格式,我這里就簡單羅列日常生活最常用的幾種,對於更多的輸入方式可以查看源碼後者官網。
CSV文件
csv文件導入後顯示輸出的話,是按照csv文件默認的行輸出的,有多少列就輸出多少列,比如我有五列數據,那麼它就在prinit輸出結果的時候,就顯示五列
excel表格
依賴於xlrd模塊,請安裝它。
老樣子,原滋原味的輸出顯示excel本來的結果,只不過在每一行的開頭加上了一個行數
讀取SQL
依賴於PyMySQL,所以需要安裝它。pandas把sql作為輸入的時候,需要制定兩個參數,第一個是sql語句,第二個是sql連接實例。
讀取HTML
依賴於lxml模塊,請安裝它。
對於HTTPS的網頁,依賴於BeautifulSoup4,html5lib模塊。
讀取HTML只會讀取HTML里的表格,也就是只讀取
顯示的是時候是通過python的列表展示,同時添加了行與列的標識
讀取txt文件
輸出顯示的時候同時添加了行與列的標識
scipy
安裝方法是先下載whl格式文件,然後通過pip install 「包名」 安裝。whl包下載地址是:http://www.lfd.uci.e/~gohlke/pythonlibs/f9r7rmd8/scipy-0.18.1-cp35-cp35m-win_amd64.whl
matplotlib 數據可視化分析
我們安裝這個模塊直接使用pip install即可。不需要提前下載whl後通過 pip install安裝。
下面請看代碼:
下面說說修改圖的樣式
關於圖形類型,有下面幾種:
關於顏色,有下面幾種:
關於形狀,有下面幾種:
我們還可以對圖稍作修改,添加一些樣式,下面修改圓點圖為紅色的點,代碼如下:
我們還可以畫虛線圖,代碼如下所示:
還可以給圖添加上標題,x,y軸的標簽,代碼如下所示
直方圖
利用直方圖能夠很好的顯示每一段的數據。下面使用隨機數做一個直方圖。
Y軸為出現的次數,X軸為這個數的值(或者是范圍)
還可以指定直方圖類型通過histtype參數:
圖形區別語言無法描述很詳細,大家可以自信嘗試。
舉個例子:
子圖功能
什麼是子圖功能呢?子圖就是在一個大的畫板裡面能夠顯示多張小圖,每個一小圖為大畫板的子圖。
我們知道生成一個圖是使用plot功能,子圖就是subplog。代碼操作如下:
我們現在可以通過一堆數據來繪圖,根據圖能夠很容易的發現異常。下面我們就通過一個csv文件來實踐下,這個csv文件是某個網站的文章閱讀數與評論數。
先說說這個csv的文件結構,第一列是序號,第二列是每篇文章的URL,第三列每篇文章的閱讀數,第四列是每篇評論數。
我們的需求就是把評論數作為Y軸,閱讀數作為X軸,所以我們需要獲取第三列和第四列的數據。我們知道獲取數據的方法是通過pandas的values方法來獲取某一行的值,在對這一行的值做切片處理,獲取下標為3(閱讀數)和4(評論數)的值,但是,這里只是一行的值,我們需要是這個csv文件下的所有評論數和閱讀數,那怎麼辦?聰明的你會說,我自定義2個列表,我遍歷下這個csv文件,把閱讀數和評論數分別添加到對應的列表裡,這不就行了嘛。呵呵,其實有一個更快捷的方法,那麼就是使用T轉置方法,這樣再通過values方法,就能直接獲取這一評論數和閱讀數了,此時在交給你matplotlib里的pylab方法來作圖,那麼就OK了。了解思路後,那麼就寫吧。
下面看看代碼:
③ 我想知道如何查看python的源代碼
查看腳本的話(python中部分函數是直接用C語言嵌入的,要在官網上搜C源碼),可以使用Pycharm,或者其他IDLE,比如我想查看python中TensorFlow包的Session函數:
任意在pycharm內的一個.py文件中,輸入這個函數
import tensorFlow as tf #載入包並命名為tf
tf.Session()
然後按住Ctrl按鈕,左鍵單擊Session,就自動打開了對應.py文件
另外一種方法是直接在python本地庫中找對應的.py文件,(可以用help函數先搜索)
④ python怎麼看package源碼
首先你要找到源碼的位置,你可以使用下面的方法:
如果你可以在命令行運行python,你可以使用下面的命令查看目錄。
>>>importstring
>>>string.__file__
'/usr/lib/python2.7/string.pyc'
>>>
對應目錄下的string.py就是package的源碼,不過有些庫因為是c寫的,會提示錯誤,這樣的庫就需要你下載python源碼,直接看c的源文件了。
如果解決了您的問題請採納!
如果未解決請繼續追問!
⑤ 《Python源碼剖析深度探索動態語言核心技術》pdf下載在線閱讀,求百度網盤雲資源
《Python源碼剖析》(陳儒)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:https://pan..com/s/1dtk-nY5HtgXS3CIBVHJCRA
書名:Python源碼剖析
作者:陳儒
豆瓣評分:8.8
出版社:電子工業出版社
出版年份:2008-6
頁數:480
內容簡介:
作為主流的動態語言,Python不僅簡單易學、移植性好,而且擁有強大豐富的庫的支持。此外,Python強大的可擴展性,讓開發人員既可以非常容易地利用C/C++編寫Python的擴展模塊,還能將Python嵌入到C/C++程序中,為自己的系統添加動態擴展和動態編程的能力。.
為了更好地利用Python語言,無論是使用Python語言本身,還是將Python與C/C++交互使用,深刻理解Python的運行原理都是非常重要的。本書以CPython為研究對象,在C代碼一級,深入細致地剖析了Python的實現。書中不僅包括了對大量Python內置對象的剖析,更將大量的篇幅用於對Python虛擬機及Python高級特性的剖析。通過此書,讀者能夠透徹地理解Python中的一般表達式、控制結構、異常機制、類機制、多線程機制、模塊的動態載入機制、內存管理機制等核心技術的運行原理,同時,本書所揭示的動態語言的核心技術對於理解其他動態語言,如 Javascript、Ruby等也有較大的參考價值。..
本書適合於Python程序員、動態語言愛好者、C程序員閱讀