偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

15個(gè)節(jié)省時(shí)間的Jupyter技巧

開發(fā) 前端
作為數(shù)據(jù)科學(xué)家,從加載數(shù)據(jù)到創(chuàng)建和部署模型,我們幾乎每天都在使用Jupyter notebook。

作為數(shù)據(jù)科學(xué)家,從加載數(shù)據(jù)到創(chuàng)建和部署模型,我們幾乎每天都在使用Jupyter notebook。

Jupyter Notebooks使用非常簡單并且對于任何面向python的任務(wù)都可以非常方便的使用。只要它的內(nèi)核處于活動(dòng)狀態(tài),就可以用數(shù)據(jù)子集運(yùn)行和測試腳本,而不用每次重啟程序,這樣可以加快我們開發(fā)和測試的速度。

但是因?yàn)樗唵瘟?,所以我們?jīng)常會(huì)犯一些錯(cuò)誤,浪費(fèi)我們的時(shí)間和計(jì)算成本。在這篇文章中,我們將討論一些可以節(jié)省時(shí)間,降低計(jì)算成本的技巧。

1、魔法命令

在Jupyter notebook中,“魔法命令”是特殊的命令,不是Python語言的一部分,但可以使您的生活更輕松。這些命令前面有%符號。

魔法命令很有用,可以直接嵌入到python代碼中,并解決常見問題,例如列出當(dāng)前目錄中的所有文件或更改當(dāng)前工作目錄。

下面是一些常見的魔術(shù)命令:

  • %run:在當(dāng)前內(nèi)核中運(yùn)行Python腳本。
  • %load:從腳本中加載代碼并在當(dāng)前內(nèi)核中運(yùn)行。
  • %who:列出所有變量。
  • %timeit:記錄一行代碼的執(zhí)行時(shí)間。
  • %debug:在異常處輸入調(diào)試器。
  • %matplotlib inline:在notebook中顯示圖形。
  • %load_ext:加載擴(kuò)展,例如IPython擴(kuò)展。
  • %pwd:打印當(dāng)前工作目錄。
  • %ls:顯示當(dāng)前目錄中的所有文件。

我們可以運(yùn)行%lsmagic來查看所有magic命令的列表。

要獲得有關(guān)特定魔術(shù)命令的更多信息,可以使用?操作符,例如%run?。

2、執(zhí)行另一個(gè)Jupyter notebook文件

可以使用魔術(shù)命令來做一些有趣的事情。例如,從py文件中執(zhí)行python代碼,或從ipynb文件中執(zhí)行jupyter notebook。

%run將執(zhí)行jupyter notebook并顯示輸出,這與導(dǎo)入python模塊不同。

我們可以運(yùn)行two-histogram notebook并得到如下輸出:

%run ./two-histograms.ipynb

3、查看文檔??

通過高亮顯示方法并按Shift + Tab鍵,可以輕松查看該方法的文檔。它將顯示編寫函數(shù)時(shí)編寫的文檔字符串。你也可以通過點(diǎn)擊右上角的+按鈕來打開模態(tài)框。

還可以通過突出顯示每個(gè)magic命令并按Shift + Tab鍵來獲得有關(guān)每個(gè)magic命令的更多信息。

4、添加多個(gè)游標(biāo)??

如果你需要重命名寫在幾個(gè)地方的變量,或者在編輯代碼時(shí),你希望你有多個(gè)光標(biāo)。

在Jupyter notebooks中,可以使用多個(gè)光標(biāo)同時(shí)編輯文本。如果你想一次對多行文本進(jìn)行相同的更改,這可能很有用。

要在Jupyter notebook中使用多個(gè)游標(biāo),可以按住Alt鍵并單擊所需的位置。這將在每個(gè)點(diǎn)擊的位置創(chuàng)建一個(gè)游標(biāo)。然后你可以像往常一樣進(jìn)行編輯,更改將同時(shí)應(yīng)用于所有位置。

Windows:按住alt +左鍵并拖動(dòng)光標(biāo)。Mac:按住option鍵+左鍵拖動(dòng)光標(biāo)。

你也可以使用Shift + Alt +上/下箭頭鍵組合來選擇多行文本,并在每一行的開頭創(chuàng)建一個(gè)光標(biāo)。

圖片

記住,使用多個(gè)游標(biāo)可能會(huì)產(chǎn)生問題,所以最好在使用這個(gè)功能之前保存好你的代碼,以防你做了任何意想不到的更改。

5、從另一個(gè)外部python腳本中插入代碼??

可以用外部python腳本替換單元格的內(nèi)容。你可以使用計(jì)算機(jī)上的任何python文件,也可以使用URL作為源。

# Before Running
%load ./hello_world.py

在下一個(gè)單元格中可以使用:

if __name__ == "__main__":
print("Hello World!")

Output
Hello World!

6、運(yùn)行CMD/Shell命令?

Jupyter notebook中使用!命令前的前綴可以運(yùn)行操作系統(tǒng)的命令。例如,要列出當(dāng)前目錄下的文件,可以使用ls命令:

!ls

你也可以通過在命令后面添加參數(shù)來傳遞參數(shù)。例如,要列出特定目錄下的文件,可以使用-l選項(xiàng)以長格式顯示文件,并將目錄路徑指定為參數(shù):

!ls -l /path/to/directory

你也可以將命令的輸賦值給一個(gè)變量,并在代碼中使用它。例如:

files = !ls
print(files)

上面代碼會(huì)把當(dāng)前目錄中的文件列表分配給files變量,并打印出來。

你可以使用這種技術(shù)在Jupyter notebook中運(yùn)行任何shell命令,只要該命令在運(yùn)行notebook的系統(tǒng)中可用。

7、為程序完成設(shè)置鬧鐘?

當(dāng)你的模型完成訓(xùn)練或任何任務(wù)時(shí),得到一個(gè)通知總是很有幫助的。

在windows 10中,我們可以使用win10toast模塊設(shè)置它。

pip install win10toast

然后使用這段代碼

 from win10toast import ToastNotifier
toaster = ToastNotifier()

#Your program

toaster.show_toast("Execution complete",
"Your calculation completed",
duration=10)

我們在程序完成執(zhí)行時(shí)為我們進(jìn)行提示。

 import winsound

# set an alarm of 440HZ for one second (1000ms)
duration = 1000
freq = 440

winsound.Beep(freq, duration)

Mac和Linux可以使用os模塊,使用afplay命令(在macOS上)或aplay命令(在Linux上)播放聲音。

import os

# Run your program here
# Play a sound when the program completes
os.system("afplay /path/to/sound.mp3") # macOS
os.system("aplay /path/to/sound.wav") # Linux

可以將/path/to/sound.mp3替換為要播放的聲音文件的路徑。或者是afplay或aplay命令支持的任何音頻文件,如MP3、WAV或AIFF。

只有在運(yùn)行Jupyter notebook的系統(tǒng)上有afplay或aplay命令時(shí),此方法才有效。

在Mac中,還可以使用內(nèi)置命令say,在程序完成時(shí)說一些話。

import os

os.system('say "hi siri"')

8、顯示執(zhí)行時(shí)間

要在Jupyter notebook中測量單元格的執(zhí)行時(shí)間,可以使用%timeit魔法命令。此命令將執(zhí)行單個(gè)語句并返執(zhí)行時(shí)間。下面是如何使用%timeit的例子:

%timeit sum(range(100))

這將計(jì)算sum函數(shù)的執(zhí)行時(shí)間,并返回執(zhí)行該函數(shù)所需的平均時(shí)間。

圖片

還可以使用%%timeit來測量整個(gè)單元格的執(zhí)行時(shí)間:

 %%timeit

total = 0
for i in range(1000):
total += i

圖片

可以看到上面的代碼與我們使用使用Python中的time模塊的結(jié)果類似

import time

start_time = time.time()

# code to measure
sum(range(100))

end_time = time.time()

elapsed_time = end_time - start_time
print(f'Execution time: {elapsed_time:.2f} seconds')

注意:這些方法只會(huì)測量單元格中代碼的執(zhí)行時(shí)間。如果計(jì)算單元依賴于其他計(jì)算單元或外部資源,則執(zhí)行時(shí)間將不包括執(zhí)行這些依賴項(xiàng)所需的時(shí)間。

9、在notebook之間傳遞變量

在Jupyter notebook中,%store魔法命令可以在notebook之間傳遞變量。

下面是一個(gè)使用它的例子:

var1 = 10
%store var1

在另外一個(gè)notebook中可以用下面命令獲得變量的值

%store -r var1
print(var1)

%store魔法命令有以下幾個(gè)操作

  • %store var1:存儲變量var1
  • %store -r var1:檢索存儲的變量var1,并將其賦值給當(dāng)前筆記本中同名的變量
  • %store -d var1:刪除已存儲的變量var1
  • %store -z:刪除所有已存儲的變量

你也可以使用一個(gè)%store命令存儲多個(gè)值,如

%store var1 var2

%store命令僅在相同的Jupyter會(huì)話中有效。

%store命令的值在內(nèi)核重啟后也是可以訪問的,看看下面這個(gè)例子。

圖片

10、列出所有鍵盤快捷鍵?

學(xué)習(xí)鍵盤快捷鍵將節(jié)省你大量的時(shí)間。我們可以在頂部菜單下:幫助>鍵盤快捷鍵檢查它們,或在命令模式下按H鍵來查看。以下是Jupyter notebook中一些常用的鍵盤快捷鍵列表:

  • Enter:當(dāng)前單元格進(jìn)入編輯模式
  • Esc:當(dāng)前單元格進(jìn)入命令模式
  • Shift + Enter:運(yùn)行當(dāng)前單元格并移動(dòng)到下一個(gè)單元格
  • Ctrl + Enter:運(yùn)行當(dāng)前單元格
  • Alt + Enter:運(yùn)行當(dāng)前單元格并在下面插入一個(gè)新單元格
  • Shift + Tab:顯示當(dāng)前函數(shù)或?qū)ο蟮奈臋n
  • Ctrl + S:保存
  • A:在當(dāng)前單元格的上方插入一個(gè)新單元格(在命令模式下)
  • B:在當(dāng)前單元格下面插入一個(gè)新單元格(在命令模式下)
  • M:將當(dāng)前單元格更改為Markdown單元格(在命令模式下)
  • Y:將當(dāng)前單元格更改為代碼單元格(在命令模式下)
  • D + D:刪除當(dāng)前單元格(在命令模式下)
  • Z:撤銷最后一次刪除單元格(在命令模式下)
  • X:切割選定的單元格(在命令模式下)
  • C:復(fù)制選中的單元格(在命令模式下)
  • V:粘貼選中的單元格(在命令模式下)
  • Ctrl + Shift + -將當(dāng)前單元格從光標(biāo)所在的位置拆分成兩個(gè)。(在命令模式下)
  • Esc + F:找到并替換你的代碼,但不替換輸出。(在命令模式下)
  • Esc + O:切換單元格輸出(在命令模式下)

選擇多個(gè)單元格:

  • Shift + Down選擇向下方向的下一個(gè)單元格。
  • Shift + Up選擇向上方向的下一個(gè)單元格。(在命令模式下)
  • Shift + M:合并多個(gè)選定單元格。(在命令模式下)

還可以使用%shortcuts魔術(shù)命令查看當(dāng)前單元格輸出區(qū)域的鍵盤快捷鍵列表:

%shortcuts

這將顯示所有快捷鍵及其相應(yīng)操作的列表。

11、隱藏不必要的輸出

當(dāng)你從Jupyter notebook創(chuàng)建報(bào)告時(shí),看到不必要的內(nèi)存代碼或?qū)ο骾d是很煩人的。要將這些不必要的輸出隱藏在起來可以使用 分號 ;

看看下面代碼:

圖片

如果想屏蔽matplotlib的輸出,看看下面代碼,注意后面的分號:

plt.plot(x,y);

圖片

12、使用python以外的其他語言編寫函數(shù)

如果你正在處理大量的大型數(shù)據(jù)集,并且numpy的速度不夠快,那么你可以直接在python代碼中直接編寫一些c或fortran代碼。

如果你想開始用c編寫函數(shù),那么你將需要cython庫。

!pip install Cython

加載和使用:

%load_ext Cython

%%cython
def myltiply_by_2(float x):
return 2.0 * x

myltiply_by_2(23.)

要編寫fortran函數(shù),則需要另一個(gè)庫fortrain-magic。

!pip install fortran-magic

代碼如下:

%load_ext fortranmagic

%%fortran subroutine compute_fortran(x, y, z)
real, intent(in) :: x(:), y(:)
real, intent(out) :: z(size(x, 1))
z = sin(x + y)
end subroutine compute_fortran

compute_fortran([1, 2, 3], [4, 5, 6])

13、擴(kuò)展pandas輸出中的列數(shù)和行數(shù)

默認(rèn)情況下,panda的dataframe只能顯示有限數(shù)量的行和列。有幾種方法可以擴(kuò)展Jupyter Notebook中pandas DataFrame中顯示的行和列的數(shù)量。

方法1:使用pd.options.display.max_rows和pd.options.display.max_columns選項(xiàng)。

例如要顯示最多100行50列,可以使用以下代碼:

import pandas as pd

pd.options.display.max_rows = 100
pd.options.display.max_columns = 50

方法2:使用pd.set_option函數(shù)設(shè)置這些選項(xiàng)。例如:

pd.set_option("display.max_rows", 100)
pd.set_option("display.max_columns", 50)

或者可以使用head和tail方法來顯示DataFrame的前幾行或后幾行。例如:

df.head(10)
df.tail(5)

方法3:使用IPython中的IPython.display模塊控制顯示。例如:

from IPython.display import display

display(df, max_rows=100, max_columns=50)

這將顯示100行50列的DataFrame。

14、提取輸入和輸出單元數(shù)據(jù)

當(dāng)你執(zhí)行完一個(gè)單元格時(shí),你意識到忘記給一個(gè)變量賦值,那怎么辦呢?

我們在jupyter notebook中執(zhí)行單元格時(shí),它將分配一個(gè)行號為ln:

圖片

當(dāng)單元格完成執(zhí)行時(shí),我們會(huì)得到一個(gè)輸出并且可以通過傳遞執(zhí)行編號作為索引來訪問它

圖片

Out是一個(gè)python字典,存儲單元格的所有輸出。我們可以使用編號作為索引來訪問輸出。

15、導(dǎo)出單元格的內(nèi)容

當(dāng)完成jupyter的測試我們可能會(huì)想將jupyter單元中內(nèi)容導(dǎo)出到python文件中。最簡單的辦法是創(chuàng)建一個(gè)py文件并復(fù)制粘貼代碼,但這很明顯不是最好的方法。

%%writefile是一個(gè)Jupyter Notebook魔法命令,可以將單元格的內(nèi)容保存為Python文件。例如在單元格中有以下代碼:

%%writefile example.py
def add(a, b):

print(add(3, 4))

你可以運(yùn)行單元格后將在Jupyter Notebook所在的目錄中創(chuàng)建一個(gè)名為example.py的文件,文件內(nèi)容就是單元格內(nèi)的python代碼

%pycat是另外一個(gè)Jupyter Notebook魔法命令,它在Notebook的單元格中顯示Python文件的內(nèi)容。如果在單元格中有以下代碼:

%pycat example.py

它將在單元格的輸出中顯示example.py文件的內(nèi)容。這對于快速查看Python文件的內(nèi)容非常有用。

總結(jié)

以上就是我們總結(jié)的一些技巧,希望對你有所幫助。


責(zé)任編輯:華軒 來源: DeepHub IMBA
相關(guān)推薦

2022-05-02 17:52:53

Python編程語言

2011-02-23 16:07:44

MySQL

2020-02-27 15:53:01

開發(fā)技能代碼

2024-05-13 12:36:51

Python代碼

2022-04-13 13:51:12

DevSecOps工具開發(fā)管道

2020-04-27 11:11:54

數(shù)據(jù)湖數(shù)據(jù)人工智能

2020-01-16 10:20:45

piwheels樹莓派Linux

2023-09-18 11:32:37

Python計(jì)算

2020-03-10 10:12:14

CIO自動(dòng)化人力資源

2022-12-19 15:25:22

Linux命令

2011-09-29 11:33:35

Linux

2018-07-03 10:33:51

服務(wù)器運(yùn)維Linux

2011-07-29 10:32:09

Linux管理員命令行

2011-08-01 09:36:53

Linux管理員

2023-08-13 16:46:36

2018-07-09 09:00:00

開源網(wǎng)絡(luò)管理操作系統(tǒng)

2009-08-24 08:59:10

IT白領(lǐng)網(wǎng)絡(luò)應(yīng)用

2022-05-23 15:38:28

Windows 11Windows 10微軟

2021-06-11 08:00:00

人工智能航空工具

2019-11-08 10:27:11

Linux鍵盤快捷鍵
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號