ipython shell IPython學習筆記

2021-10-11 12:22:33 字數 3905 閱讀 5812

ipython

前言life is short, you need python

最近開始學習資料探勘,需要使用到python,其實大學時代就有接觸過python,但是卻始終沒有系統的進行學習過。

以輸出為導向的學習才是最有效的學習

所以我決定每天抽出一點時間進行三件事情:

學習思考

書寫本次介紹的是ipython,相比自帶的python shell。ipython更好用,體現在以下幾個方面:

支援作業系統命令:ls,pwd,cd,cp等

通過!可執行shell命令,通過run可以執行shell指令碼

豐富的檢視命令:who,whos,who_ls,?,??

自動補全功能

複製黏貼功能paste,cpaste

工具python for data anaysis一書很多人都推薦過,讀了幾章的確不錯,本文將對首先書中提到的ipython工具進行乙個介紹,更確切的說本文本身就是通過ipython notebook生成的。通過markdown語言和**的穿插,可以很好的將自己的想法與**執行結果結合在一起展示。

啟動ipython notebook

》ipython notebook

作業系統命令

lsipython.ipynb pla.copy pla.py readme.txt

建立幾個變數,為後續示例做準備

import numpy as np

al=[1,2,3]

ar=np.array(al)

print ar

[1 2 3]

from numpy.random import randn

data=

print data

執行shell命令與python指令碼

在ipython中通過!直接執行shell命令,可以大大提高效率,如先編輯!vi hello.py,再執行run hello.py

豐富的檢視功能

可以檢視所有變數who,whos

通過?檢視單個變數的詳情,如果有原始碼還可以通過??檢視

whos

variable type data/info

al list n=3

ar ndarray 3: 3 elems, type `int64`, 24 bytes

data dict n=7

np module ages/numpy/__init__.pyc'>

randn builtin_function_or_method te object at 0x10431ae10>

al?自動補全

通過tab鍵可實現自動補全

通過ctrl+p可實現基於歷史命令的補全

複製黏貼功能

通過paste命令,可以將貼上板中的**以乙個block的形式貼上到shell中執行,避免直接貼上所帶來的對齊等問題

支援debug

直接在ipython中debug可以提高效率,在進入debug模式ipdb,可通過?查詢所有debug命令,並通過help topic檢視具體某個命令的用法與含義,先介紹常見的幾個命令:

b num 在num行設定斷點

c (continue)繼續執行

n (next)下一步

s (step) into 進入呼叫函式內部

以下為乙個示例

run -d hello.py

breakpoint 1 at /users/sunq/git/learnpython/hello.py:1

note: enter 'c' at the [0;34mipdb> [0m prompt to continue execution.

> [0;32m/users/sunq/git/learnpython/hello.py[0m(1)[0;36m[0;34m()[0m

[1;31m1[0;32m---> 1 [0;31m[0ma[0m[0;34m=[0m[0;36m3[0m[0;34m[0m[0m

[0m[0;32m 2 [0;31m[0mb[0m[0;34m=[0m[0;36m5[0m[0;34m[0m[0m

[0m[0;32m 3 [0;31m[0mc[0m[0;34m=[0m[0ma[0m[0;34m+[0m[0mb[0m[0;34m[0m[0m

[0m[0;32m 4 [0;31m[0;32mprint[0m [0mc[0m[0;34m[0m[0m

[0m[0;32m 5 [0;31m[0;32mprint[0m [0;34m'hello'[0m[0;34m[0m[0m

[0mipdb> b 3

breakpoint 2 at /users/sunq/git/learnpython/hello.py:3

ipdb> n

> [0;32m/users/sunq/git/learnpython/hello.py[0m(2)[0;36m[0;34m()[0m

[1;31m1[0;32m 1 [0;31m[0ma[0m[0;34m=[0m[0;36m3[0m[0;34m[0m[0m

[0m[0;32m----> 2 [0;31m[0mb[0m[0;34m=[0m[0;36m5[0m[0;34m[0m[0m

[0m[1;31m2[0;32m 3 [0;31m[0mc[0m[0;34m=[0m[0ma[0m[0;34m+[0m[0mb[0m[0;34m[0m[0m

[0m[0;32m 4 [0;31m[0;32mprint[0m [0mc[0m[0;34m[0m[0m

[0m[0;32m 5 [0;31m[0;32mprint[0m [0;34m'hello'[0m[0;34m[0m[0m

[0mipdb> c

> [0;32m/users/sunq/git/learnpython/hello.py[0m(3)[0;36m[0;34m()[0m

[1;31m1[0;32m 1 [0;31m[0ma[0m[0;34m=[0m[0;36m3[0m[0;34m[0m[0m

[0m[0;32m 2 [0;31m[0mb[0m[0;34m=[0m[0;36m5[0m[0;34m[0m[0m

[0m[1;31m2[0;32m---> 3 [0;31m[0mc[0m[0;34m=[0m[0ma[0m[0;34m+[0m[0mb[0m[0;34m[0m[0m

[0m[0;32m 4 [0;31m[0;32mprint[0m [0mc[0m[0;34m[0m[0m

[0m[0;32m 5 [0;31m[0;32mprint[0m [0;34m'hello'[0m[0;34m[0m[0m

[0mipdb> c

hello

from python

計算程式耗時

time命令

time np.arange(100)+np.arange(100)

cpu times: user 44 µs, sys: 22 µs, total: 66 µs

wall time: 56 µs

array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24,

26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50,

52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,

78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102,

104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128,

130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154,

156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180,

182, 184, 186, 188, 190, 192, 194, 196, 198])

C Primer Chapter One學習筆記

筆記 1.流 從io裝置上讀入或寫出的字串行,用來說明字元隨時間順序生成或消耗。2.輸入輸出符可連用原因 operator 或operator 返回stream物件。3.要測試程式那個語句出錯,使用cout 4.新建乙個內建型別,如int i 0 最好先初始化,不然用到的時候沒初始化會產生奇怪的錯誤...

BroadcastReceiver學習筆記

需要注意 的是,不要在 onreceive 方法中新增過多的邏輯或者進行任何的耗時操作,因為在廣播接收 器中是不允許開啟執行緒的,當 onreceive 方法執行了較長時間而沒有結束時,程式就會報錯。有序broadcast,sendorderedbroadcast intent,null abort...

CDISC SDTM SE domain 學習筆記

整理翻譯自 sdtm ig 3.2 www.cdisc.org sdtm se subject elements 鞏固每個subject的epochs和elements的起止時間點.se對於有多個 時期的試驗有著重要的用處 如crossover試驗 se包含乙個subject從乙個element進入...