SegmentFault 技術週刊 Vol.30 - 學習 Python 來作一些神奇好玩的事情吧

圖片描述

前言

開始以前,咱們先來看這樣一個提問:javascript

python初學者,請教python學習路徑前端

相信看完 @X_AirDu 的回答咱們已經對 Python 有了一個大概的瞭解。那接下來就讓咱們更深刻的瞭解 Python 吧~java

Python 入門

[零基礎學Python]一些關於Python的事情python

已經描述了python的美好,開始學啦,作好以下準備:git

  • 電腦,必須的。無論是什麼操做系統。程序員

  • 上網,必須的。沒有爲何。github

除了這些,還有一條,很是很是重要,寫在最後:這是本身的興趣web

如何系統地自學 Python?面試

是否很是想學好 Python,一方面被雜事糾纏,一直沒能動手,另外一方面,擔憂學習成本過高,內心默默敲着退堂鼓?
幸運的是,Python 是一門初學者友好的編程語言,想要徹底掌握它,你沒必要花上太多的時間和精力。
廢話很少說,學會一門語言的捷徑只有一個: Getting Started正則表達式

Python初學者的資源總結

[譯]學習Python編程的19個資源

Programming Computer Vision with Python 學習筆記

《Programming Computer Vision with Python》是一本介紹計算機視覺底層基本理論和算法的入門書,經過這本收能夠學到有關對象識別、基於內容的圖像搜索、光學字符識別、光流法、跟蹤、三維重建、立體成像、加強現實、姿態估計、全景建立、圖像分割、降噪、圖像分組等技術的實現原理。
英文版PDF下載:https://it-ebooks.info/book/836/
中文版介紹:http://book.douban.com/subjec...

目錄及章節簡介

先介紹基本的圖像處理,包括圖像的讀取、轉換、縮放、導數計算、畫圖和保存,這些知識將爲後面內容的學習打下基礎。

首先介紹跟圖像處理、顯示有關兩個庫:NumPy和Matplotlib,而後介紹加強圖像對比度的實現原理。

原書對於PCA的講解只有一小節,一筆帶過的感受,但我發現PCA是一個很重要的基礎知識點,在機器機視覺、人臉識別以及一些高級圖像處理技術時都被常常用到,因此本人自行對PCA進行了更深刻的學習。

上一個筆記主要是講了PCA的原理,並給出了二維圖像降一維的示例代碼。但還遺留了如下幾個問題:

  • 在計算協方差和特徵向量的方法上,書上使用的是一種被做者稱爲compact trick的技巧,以及奇異值分解(SVD),這些都是什麼東西呢?

  • 如何把PCA運用在多張圖片上?

因此,咱們須要進一步的瞭解,同時,爲示例對多張圖片進行PCA,我選了一個跟書類似但更有趣的例子來作——人臉識別。

SciPy庫,與以前咱們使用的NumPy和Matplotlib,都是scipy.org提供的用於科學計算方面的核心庫。相對NumPy,SciPy庫提供了面向更高層應用的算法和函數(其實也是基於NumPy實現的),並以子模塊的形式組織,每一個子模塊對應不一樣的應用領域。

邊緣檢測(edge detection)是最重要的圖像處理技術之一,圖像邊緣檢測大幅度地減小了數據量,而且剔除了能夠認爲不相關的信息,保留了圖像重要的結構屬性,爲後續圖像理解方法提供了基礎。

數學形態學(mathematical morphology)關注的是圖像中的形狀,它提供了一些方法用於檢測形狀和改變形狀。起初是基於二值圖像提出的,後來擴展到灰度圖像。二值圖像就是:每一個像素的值只能是0或1,1表明描繪圖像的點,0表明背景。
基本的形態學運算包括:腐蝕(erosion)、膨脹(dilation)、開(opening)、閉(closing),對於這些運算,都須要用到被稱爲結構元素(Structuring element)的模板,通常爲方形,以小矩陣的形式表示,但它的元素的值只能是0或1,它表明的是一個集合,這個集合罩在原圖像上,能夠跟原圖像的形狀進行集合運算。

圖像去噪(Image Denoising)的過程就是將噪點從圖像中去除的同時儘量的保留原圖像的細節和結構。這裏講的去噪跟前面筆記提過的去噪不同,這裏是指高級去噪技術,前面提過的高斯平滑也能去噪,但高斯平滑去噪的同時也把邊緣模糊化了,另外使用形態學的方法去噪是指去除一些粗的椒鹽噪聲。對於一幅密佈噪點的圖像,若是使其變得清晰又保留邊緣細節,這是高級去噪技術所要解決的問題。

角檢測(Corner detection)是指檢測圖像中具備表明性的(咱們感興趣的)角點,通常講爲形狀或邊緣的拐角處,這些點能夠大略標記對象在圖像中的輪廓和位置,若是從一個圖像序列中檢測每一個圖像的角點,就能夠找出圖像之間存在的相關和相對應的角點,這對好比全景拼接(多張圖片拼接成一張全景圖片)頗有用。
角檢測還能夠用在運動檢測、物體識別等方面。

如今考慮一個全景圖拼接的應用場景,假設現有兩張圖片須要拼接成一張全景圖,這兩張圖片是經過相機右轉必定角度拍攝出來的,兩張圖片有部分取景是重疊的。如何實現拼接?固然這是一個不簡單的問題,咱們如今只考慮實現拼接目標的第一步:找出圖像中重疊的內容,以及分別在兩張圖片中的位置。

尺度不變特徵變換(Scale-invariant feature transform, 簡稱SIFT)是圖像局部特徵提取的現代方法——基於區域/圖像塊的分析。在上篇筆記裏咱們使用的圖像之間對應點的匹配方法,不適用於不一樣尺度的圖像。有許多應用場景須要對不一樣尺度(即分辨率、縮放、旋轉角度、亮度等均可能存在不一樣)的圖像進行特徵識別和匹配,這就須要一種特徵提取方法,經過這種方法提取出來的特徵描述,能夠不受尺度的影響,SIFT算法就是這種方法的實現。
SIFT算法的應用很是普遍,包括物體識別、機器人地圖感知與導航、全景拼接、3D建模、手勢識別、影像追蹤和動做比對等,原書後面章節的算法也會屢次用到它。SIFT算法的過程較複雜,本文只是粗略介紹其關鍵步驟,以便引出SURF——基於SIFT的改進算法。

ORB(Oriented FAST and Rotated BRIEF)可用來替代SIFT(或SURF),它對圖像更具備抗噪特性,是一種特徵檢測高效算法,其速度知足實時要求,可用於加強圖像匹配應用。
ORB的算法基於FAST角檢測(Features from accelerated segment test)和BRIEF(Binary Robust Independent Elementary Features)特徵描述符,這也是它名字的由來。

Python 進階

[原] Python 開發者面向文檔編程的正確姿式

在實際生產中,機器學習工做如今看起來,白天像是個算法工程師的活,晚上就變成運維+測試了。Python 一直以來也都受到測試工程師和運維工程師的偏心,下面是幾個經典的註釋活用case。

[譯]讓你的Python代碼優雅又地道

在Python社區文化的澆灌下,演化出了一種獨特的代碼風格,去指導如何正確地使用Python,這就是常說的pythonic。通常說地道(idiomatic)的python代碼,就是指這份代碼很pythonic。Python的語法和標準庫設計,到處契合着pythonic的思想。並且Python社區十分注重編碼風格一的一致性,他們極力推行和到處實踐着pythonic。因此常常能看到基於某份代碼P vs NP (pythonic vs non-pythonic)的討論。pythonic的代碼簡練,明確,優雅,絕大部分時候執行效率高。閱讀pythonic的代碼能體會到「代碼是寫給人看的,只是順便讓機器能運行」暢快。

python高級特性

python語言的一些高階用法主要有如下幾個特性:

  • generators生成器用法

  • collections包常見用法

  • itertools包常見用法

  • packing/unpacking封包/解包特性

  • Decorators裝飾器

  • Context Managers上下文管理期

以上幾個特性我會針對應用場景,使用注意事項,應用舉例幾個維度分別進行講解,若是有同窗對某個特性特別熟悉則能夠直接跳過。

深刻淺出地,不折不扣地理解python中的編碼

python處理文本的功能很是強大,可是若是是初學者,沒有搞清楚python中的編碼機制,也常常會遇到亂碼或者decode error。本文的目的是簡明扼要地說明python的編碼機制,並給出一些建議。

Python裝飾器爲何難理解?

不管項目中仍是面試都離不開裝飾器話題,裝飾器的強大在於它可以在不修改原有業務邏輯的狀況下對代碼進行擴展,權限校驗、用戶認證、日誌記錄、性能測試、事務處理、緩存等都是裝飾器的絕佳應用場景,它可以最大程度地對代碼進行復用。

衆裏尋她千百度--正則表達式

簡單來講,正則表達式就是用來匹配特定內容的字符串。舉個例子來說,若是我想找出由a、b組成的,以abb結尾的字符串,好比ababb,那麼用正則表達式來表示就是[ab]*abb。

【Python3】Python面向對象的程序設計

python中一切皆爲對象,且python3統一了類與類型的概念,類型就是類。
基於面向對象設計一個款遊戲:英雄聯盟,每一個玩家選一個英雄,每一個英雄都有本身的特徵和和技能,特徵即數據屬性,技能即方法屬性,特徵與技能的結合體就一個對象。
從一組對象中提取類似的部分就是類,類全部對象都具備的特徵和技能的結合體。
在python中,用變量表示特徵,用函數表示技能,於是類是變量與函數的結合體,對象是變量與方法(指向類的函數)的結合體。

Python源碼理解: '+=' 和 'xx = xx + xx'的區別

如今咱們大概明白了+=其實是幹嗎了: 它應該能算是一個增強版的+, 由於它比+多了一個寫回自己的功能.不過是否可以寫回自己, 仍是得看對象自身是否支持, 也就是說是否具有Py_NotImplemented標識, 是否支持sq_inplace_concat, 若是具有, 才能實現, 不然, 也就是和 + 效果同樣而已.

那些有趣/用的 Python 庫

Python拾遺(一)

Python 能夠作什麼

總所周知,Python 作爬蟲很方便,有現成的庫,這是不少從入門級選手到專業級選手都在作的。Python 也能夠作遊戲。Python 還很受黑客的青睞,在黑客領域的應用就很少說了。此外 Python 作網站也無壓力,好比知乎的主站後臺就是基於 Python 的 tornado 框架,豆瓣的後臺也是基於 Python。能夠不負責任地說,Python 幾乎能夠作任何事情。Python 還能夠作桌面程序,Python 有不少 UI 庫,能夠很方便地完成一個 GUI 程序,好比大名鼎鼎的 Dropbox,就是用 Python 實現的服務器端和客戶端程序。

爬蟲

Python爬蟲基礎

python爬蟲基礎知識,至此足夠,接下來,在實戰中學習更高級的知識。

精通Python網絡爬蟲(0):網絡爬蟲學習路線

隨着大數據時代的到來,人們對數據資源的需求愈來愈多,而爬蟲是一種很好的自動採集數據的手段。
那麼,如何才能精通Python網絡爬蟲呢?學習Python網絡爬蟲的路線應該如何進行呢?在此爲你們具體進行介紹。

Python爬蟲使用Selenium+PhantomJS抓取Ajax和動態HTML內容

在上一篇python使用xslt提取網頁數據中,要提取的內容是直接從網頁的source code裏拿到的。可是一些Ajax動態內容是在source code找不到的,就要找合適的程序庫把異步或動態加載的內容加載上來,交給本項目的提取器進行提取。
python可使用selenium執行javascript,selenium可讓瀏覽器自動加載頁面,獲取須要的數據。selenium本身不帶瀏覽器,可使用第三方瀏覽器如Firefox,Chrome等,也可使用headless瀏覽器如PhantomJS在後臺執行。

Python爬蟲項目整理

爬蟲實戰系列

Web 程序開發

開始Tornado的源碼分析之旅

Tornado 是由 Facebook 開源的一個服務器「套裝」,適合於作 python 的 web 或者使用其自己提供的可擴展的功能,完成了不完整的 wsgi 協議,可用於作快速的 web 開發,封裝了 epoll 性能較好。文章主要以分析 tornado 的網絡部分即異步事件處理與上層的 IOstream 類提供的異步IO,其餘的模塊如 web 的 tornado.web 之後慢慢留做分析。

tornado 源碼閱讀-初步認識

最近閒暇無事,閱讀了一下tornado的源碼,對總體的結構有了初步認識,與你們分享

我心中的 tornado 最佳實踐

最近開發新項目一直在學習tornado的知識,在前人的基礎上找了些最佳實踐,記錄以下,備查。

Tornado 簡單入門教程:

Tornado 簡單入門教程(零)——準備工做

這兩天在學着用Python + Tornado +MongoDB來作Web開發(哈哈哈這個詞好高端)。學的過程當中查閱了無數資料,也收穫了一些經驗,因此但願總結出一份簡易入門教程供初學者參考。完整的教程將盡量(233)遵循下面的目錄順序。

Tornado 簡單入門教程(一)——Demo1

Demo1是一個簡單的博客系統(=。=什麼網站都叫系統)。咱們從這個簡單的系統入手,去了解P+T+M網站的內部邏輯,並記住一些「規則」,方便咱們進一步本身開發。

Tornado 簡單入門教程(二)——Demo2

在Demo1裏面,咱們練習瞭如何部署應用、tornado框架的基本結構以及應用如何處理請求。
其實Demo1算不上一個博客啦。一個最基本的信息系統必定要包含對數據庫的增、刪、改和查。因此此次,咱們來將Demo1升級爲Demo2,添加上基本的增刪改查。

圖像與視頻處理

一直斷斷續續的用過幾回 OpenCV,感受熟練掌握它的使用方法已經變的很是必要了,正好找到一個很不錯的英文教程,就以此爲起點,詳細記錄一下對 OpenCV 的學習過程吧。

準備工做

圖像處理

視頻處理

科學計算

數據科學部門如何使用Python和R組合完成任務

和那些數據科學比賽不一樣,在真實的數據科學中,咱們可能更多的時間不是在作算法的開發,而是對需求的定義和數據的治理。因此,如何更好的結合現實業務,讓數據真正產生價值成了一個更有意義的話題。
數據科學項目的完整流程一般是這樣的五步驟:
需求定義=》數據獲取=》數據治理=》數據分析=》數據可視化

Python科學計算利器——Anaconda

最近在用Python作中文天然語言處理。使用的IDE是PyCharm。PyCharm確實是Python開發之首選,但用於科學計算方面,還略有欠缺。爲此我嘗試過Enthought Canopy,但Canopy感受把問題搞得複雜化,管理Python擴展也不太方便。直到今天我發現了Anaconda。
Anaconda是一個和Canopy相似的科學計算環境,但用起來更加方便。自帶的包管理器conda也很強大。

數據分析

[翻譯]使用Python一步一步地來進行數據分析

你學習Python時能犯的最簡單的錯誤之一就是同時去嘗試學習過多的庫。當你努力一會兒學會每樣東西時,你會花費不少時間來切換這些不一樣概念之間,變得沮喪,最後轉移到其餘事情上。

因此,堅持關注這個過程:

  • 理解 Python 基礎

  • 學習 Numpy

  • 學習 Pandas

  • 學習 Matplolib

numpy:python數據領域的功臣

numpy對python的意義非凡,在數據分析與機器學習領域爲python立下了汗馬功勞。如今用python搞數據分析或機器學習常用的pandas、matplotlib、sklearn等庫,都須要基於numpy構建。絕不誇張地說,沒有numpy,python今天在數據分析與機器學習領域只能是捉襟見肘。

機器學習

0x01 念念Python,必有迴響

真如有心於數據領域,甚或欲從事數據科學之職業。請對Python有信心,值得你付出時間。想走機器學習之路,Scikit-learn是你最好的選擇,一邊操做實例,一邊閱讀文檔,再輔助以相關的理論基礎,持之很多天,則大業可成也。

Python機器學習工具:Scikit-Learn介紹與實踐

官方的解釋很簡單: Machine Learning in Python, 用python來玩機器學習。
Scikit-learn的優勢:

  • 構建於現有的NumPy(基礎n維數組包),SciPy(科學計算基礎包), matplotlib(全面的2D/3D畫圖),IPython(增強的交互解釋器),Sympy(Symbolic mathematics), Pandas(數據結構和分析)之上,作了易用性的封裝。

  • 簡單且高效的數據挖掘、數據分析的工具。

  • 對全部人開放,且在不少場景易於複用。

  • BSD證書下開源。

教程 | 如何用Python和機器學習炒股賺錢?

相信不少人都想過讓人工智能來幫你賺錢,但到底該如何作呢?瑞士日內瓦的一位金融數據顧問 Gaëtan Rickter 近日發表文章介紹了他利用 Python 和機器學習來幫助炒股的經驗,其最終成果的收益率跑贏了長期處於牛市的標準普爾 500 指數。雖然這篇文章並無將他的方法徹底完全公開,但已公開的內容或許能給咱們帶來如何用人工智能炒股的啓迪。機器之心對本文進行了編譯介紹,代碼詳情請訪問原文。

歐拉函數(Euler' totient function )

gamma函數的求導會出現所謂的歐拉函數(phi),在一篇論文中我須要對好幾個歐拉函數求值,結果不能理解,當即去google,發現了一個開源的python庫能夠用來計算歐拉函數

Python 機器學習入門資料整理

用 Python 來作一些神奇好玩的事情吧

這10個Python項目超有趣

Python可謂是如今不少人正在學或者想學的一個腳本語言了,提到學習天然就少不了拿項目練手,但是通常的項目根本提不起興趣嘛,這10個項目但是很是有趣的,不信你看看。

Python 讀寫excel文件

最近須要用到Python來操做excel表,讀取表格內容到數據庫。因此就搜索了相關資料。查找了一下,能夠操做excel表的幾個庫有如下幾個:

  • openpyxl 這個是推薦使用的庫,能夠讀寫Excel 2010以上格式,以.xlsx結尾的文件。

  • xlsxwriter 這個支持.xlsx,可是隻支持寫入,格式化等操做,不支持讀取。

  • xlrd 這個支持讀取數據,支持以xls結尾的文件,也就是比較老的格式。

  • xlwt 這個和上面的相對應,支持寫入書和格式化數據,支持xls結尾的文件格式。

  • xlutils 這個是整合了xlrd和xlwt兩個庫的功能。

通過對比我仍是選擇了openpyxl這個庫,下面針對這個庫的使用進行說明

7 行Python的人臉識別

隨着去年alphago 的震撼表現,AI 再次成爲科技公司的寵兒。AI涉及的領域衆多,圖像識別中的人臉識別是其中一個有趣的分支。百度的BFR,Face++的開放平臺,漢王,訊飛等等都提供了人臉識別的API,對於老碼農而言,本身寫一小段代碼,來看看一張圖片中有幾我的,沒有高大上,只是以爲好玩,並且只須要7行代碼。

動手實操 | 如何用 Python 實現人臉識別,證實這個楊冪是那個楊冪?

當前,人臉識別應用於許多領域,如支付寶的用戶認證,許多的能識別人心情的 AI,也就是人的面部表情,還有能分析人的年齡等等,而這裏面有着許多的難度,在這裏我想要分享的是一個利用七牛 SDK 簡單的實現人臉識別的方法,固然七牛的 SDK 中提供了不少的拓展,在返回的 JSON 中包含着如年齡等信息,這裏就不進行分享了。這裏咱們要使用的是七牛雲平臺中由第三方數據處理提供的 API。

Python 爬蟲:把廖雪峯的教程轉換成 PDF 電子書

寫爬蟲彷佛沒有比用 Python 更合適了,Python 社區提供的爬蟲工具多得讓你眼花繚亂,各類拿來就能夠直接用的 library 分分鐘就能夠寫出一個爬蟲出來,今天就琢磨着寫一個爬蟲,將廖雪峯的 Python 教程 爬下來作成 PDF 電子書方便你們離線閱讀。

我用Python分析了42萬字的歌詞,爲了搞清楚民謠歌手們在唱些什麼

聽了這麼多年民謠,我有一種感受,就是不少歌都似曾相識,可是仔細一想,又哪一首都想不起來,爲了搞清楚這羣流浪在祖國大地的現代遊吟詩人們都在唱些什麼,我作了一些數據分析的工做。

僅78行代碼實現微信撤回消息查看~

今天一大早奔來圖書館,想一想了微信很簡潔也很強大的一個工具,最近微信的新聞仍是比較多的, 好比:小程序、時間軸等,這不是重點,重點是看到了一個基於python的微信開源庫:itchat,玩了一天。Python曾經對我說:"時日很少,趕忙用Python"。

Python爬蟲,看看我最近博客都寫了啥,帶你製做高逼格的數據聚合雲圖

今天一時興起,想用python爬爬本身的博客,經過數據聚合,製做高逼格的雲圖(對詞彙出現頻率視覺上的展現),看看最近我到底寫了啥文章。

桑心病狂,試試把報警日誌發到微信上

wechat_sender 是基於 wxpy 和 tornado 實現的一個能夠將你的網站、爬蟲、腳本等其餘應用中各類消息 (日誌、報警、運行結果等) 發送到微信的工具。
使用 wechat_sender 很簡單,只須要有我的微信號,而後用我的微信號啓動 wechat_sender 服務。

微信公號DIY:一小時搭建微信聊天機器人

使用Python實現聊天機器人的方案有多種:AIML、chatterBot以及圖靈聊天機器人和微軟小冰等。
考慮到之後可能會作一些定製化的需求,這裏我選擇了chatterBot
chatterbot是一款python接口的,基於一系列規則和機器學習算法完成的聊天機器人。具備結構清晰,可擴展性好,簡單實用的特色。

用 Python 寫一個 NoSQL 數據庫

NoSQL 這個詞在近些年正變得隨處可見, 可是到底 "NoSQL" 指的是什麼? 它是如何而且爲何這麼有用? 在本文, 咱們將會經過純 Python (我比較喜歡叫它, "輕結構化的僞代碼") 寫一個 NoSQL 數據庫來回答這些問題。

Python 動手寫一個刷網站流量的工具

Python 詞雲分析周杰倫《晴天》

Python 講堂

python爬蟲之實戰花瓣網

講師:

@kimg1234,知乎專欄 爬蟲入門到精通系統教程 的做者,對爬蟲技巧有特別的研究,熟悉HTTP協議。

內容簡介:

  • 如何爬取異步加載的網頁

  • 如何解析請求中的參數

  • headers中的Accept如何應用

  • 如何優雅的獲取JavaScript中的內容

  • 如何解決爬取網頁過程當中遇到的問題

使用 Python 和 TFlearn 深度學習的第一步

講師:

@Christoph,浙江財經大學數據分析和大數據計算客座教授,德國不萊梅大學數學博士

內容簡介:

近年來,深度學習已經帶動了機器學習的革命性進展:用於分類圖像和自動翻譯的深層神經網絡模型已經達到了過去沒法想象的程度。

咱們將快速概述深度神經網絡和激活函數,而後使用 TFlearn 構建圖像分類器。 TFlearn 使用相似 sklearn 的接口,一個流行的 Python 機器學習庫,利用谷歌的 TensorFlow 的底層計算和加快開發過程。 聽課只需具有一些 Python 知識便可,無需機器學習背景。

社區技術羣

SegmentFault 官方目前開放的微信技術羣以下:

  1. SF.GG 後端攻城獅交流羣

  2. SF.GG 前端攻城獅交流羣

  3. SF.GG 北京技術交流羣

  4. SF.GG 上海技術交流羣

  5. SF.GG 廣州技術交流羣

  6. SF.GG 深圳技術交流羣

  7. SF.GG 杭州技術交流羣

以上羣組僅限程序員加入,須要入羣的小夥伴請添加管理員微信好友:mgr_segmentfault,備註『羣名稱+SF用戶ID』,審覈成功後會拉你進入相應技術羣。

(本期完)


clipboard.png

相關文章
相關標籤/搜索