- 機(jī)器學(xué)習(xí)數(shù)學(xué)基礎(chǔ)一本通(Python版)
- 洪錦魁
- 5042字
- 2024-12-31 21:57:48
第1章
數(shù)據(jù)可視化
機(jī)器學(xué)習(xí)中許多時(shí)候需要將數(shù)據(jù)可視化,方便更直觀地表現(xiàn)目前的數(shù)據(jù),所以本書(shū)先介紹數(shù)據(jù)圖形的繪制,所使用的工具是matplotlib繪圖庫(kù)模塊,使用前需先安裝:
pip install matplotlib
matplotlib是一個(gè)龐大的繪圖庫(kù)模塊,本章我們只導(dǎo)入其中的pyplot子模塊就可以完成許多圖表繪制,如下所示,未來(lái)就可以使用plt調(diào)用相關(guān)的方法。
import matplotlib.pyplot as plt
本章將敘述matplotlib的重點(diǎn)內(nèi)容,完整使用說(shuō)明可以參考matplotlib的官方網(wǎng)站。
1-1 認(rèn)識(shí)matplotlib.pyplot模塊的主要函數(shù)
下列是繪制圖表的常用函數(shù)。

下列是坐標(biāo)軸設(shè)定的常用函數(shù)。

下列是圖片的讀取與儲(chǔ)存的函數(shù)。

1-2 繪制簡(jiǎn)單的折線圖plot( )
這一節(jié)將從最簡(jiǎn)單的折線圖開(kāi)始解說(shuō),常用語(yǔ)法格式如下:
plot(x, y, lw=x, ls=‘x’, label=‘xxx’, color)
x:x軸系列值,如果省略系列自動(dòng)標(biāo)記0,1,…,可參考1-2-1節(jié)。
y:y軸系列值,可參考1-2-1節(jié)。
lw:linewidth的縮寫(xiě),折線圖的線條寬度,可參考1-2-2節(jié)。
ls:linestyle的縮寫(xiě),折線圖的線條樣式,可參考1-2-6節(jié)。
color:縮寫(xiě)是c,可以設(shè)定色彩,可參考1-2-6節(jié)。
label:圖表的標(biāo)簽,可參考1-2-8節(jié)。
1-2-1 畫(huà)線基礎(chǔ)實(shí)踐
將含數(shù)據(jù)的列表當(dāng)作參數(shù)傳給plot( ),列表內(nèi)的數(shù)據(jù)會(huì)被視為y軸的值,x軸的值會(huì)依列表值的索引位置自動(dòng)產(chǎn)生。
程序?qū)嵗齝h1_1.py:繪制折線,square[ ]列表有9筆數(shù)據(jù)代表y軸值,數(shù)據(jù)基本上是x軸索引0~ 8的平方值序列,這個(gè)實(shí)例使用列表生成式建立x軸數(shù)據(jù)。

執(zhí)行結(jié)果

在繪制線條時(shí),預(yù)設(shè)顏色是藍(lán)色,更多相關(guān)設(shè)定1-2-6節(jié)會(huì)講解。如果x軸的數(shù)據(jù)是0,1,…,n時(shí),在使用plot( )時(shí)我們可以省略x軸數(shù)據(jù),可以參考下列程序?qū)嵗?/p>
程序?qū)嵗齝h1_2.py:重新設(shè)計(jì)ch1_1.py,此實(shí)例省略x軸數(shù)據(jù)。

執(zhí)行結(jié)果
與ch1_1.py相同。
從上述執(zhí)行結(jié)果可以看到左下角的軸刻度不是(0,0),我們可以使用axis( )設(shè)定x、y軸的最小和最大刻度。
程序?qū)嵗齝h1_3.py:重新設(shè)計(jì)ch1_2.py,將x軸刻度設(shè)為0~8,y軸刻度設(shè)為0~70。

執(zhí)行結(jié)果

在做數(shù)據(jù)分析時(shí),有時(shí)候會(huì)想要在圖表內(nèi)增加網(wǎng)格線,這可以讓圖表中x軸值對(duì)應(yīng)的y軸值更加清楚,可以使用grid( )函數(shù)。
程序?qū)嵗齝h1_3_1.py:增加網(wǎng)格線重新設(shè)計(jì)ch1_3.py,此程序重點(diǎn)是第7行。

執(zhí)行結(jié)果

1-2-2 線條寬度linewidth
使用plot( )時(shí)預(yù)設(shè)線條寬度是1,可以多加一個(gè)linewidth(縮寫(xiě)是lw)參數(shù)設(shè)定線條的粗細(xì)。
程序?qū)嵗齝h1_4.py:設(shè)定線條寬度是10,使用lw=10。

執(zhí)行結(jié)果

1-2-3 標(biāo)題的顯示
目前matplotlib模塊默認(rèn)不支持中文顯示,筆者將在1-5節(jié)講解如何讓圖表顯示中文,下列是幾個(gè)顯示標(biāo)題的重要方法。

上述方法默認(rèn)字號(hào)大小是12,但是可以使用fontsize參數(shù)更改字號(hào)。
程序?qū)嵗齝h1_5.py:使用默認(rèn)字號(hào)為圖表與x、y軸建立標(biāo)題。

執(zhí)行結(jié)果

程序?qū)嵗齝h1_6.py:使用設(shè)定字號(hào)24建立圖表標(biāo)題,字號(hào)16建立x、y軸標(biāo)題。

執(zhí)行結(jié)果

1-2-4 坐標(biāo)軸刻度的設(shè)定
在設(shè)計(jì)圖表時(shí)可以使用tick_params( )設(shè)計(jì)設(shè)定坐標(biāo)軸的刻度大小、顏色以及應(yīng)用范圍。

如果axis的xx是both,代表應(yīng)用到x軸和y軸;如果xx是x,代表應(yīng)用到x軸;如果xx是y,代表應(yīng)用到y軸。color則是設(shè)定刻度的線條顏色,例如:red代表紅色,1-2-6節(jié)將有顏色表。
程序?qū)嵗齝h1_7.py:使用不同刻度與顏色繪制圖表。

執(zhí)行結(jié)果

1-2-5 多組數(shù)據(jù)的應(yīng)用
目前所有的圖表皆是只有一組數(shù)據(jù),其實(shí)可以擴(kuò)充多組數(shù)據(jù),只要在plot( )內(nèi)增加數(shù)據(jù)列表參數(shù)即可。此時(shí)plot( )的參數(shù)如下:
plot(seq, 第一組數(shù)據(jù), seq, 第二組數(shù)據(jù), … )
程序?qū)嵗齝h1_8:設(shè)計(jì)含多組數(shù)據(jù)的圖表。

執(zhí)行結(jié)果

上述以不同顏色顯示線條是系統(tǒng)默認(rèn),我們也可以自定義線條色彩。
1-2-6 線條色彩與樣式
如果想設(shè)定線條色彩,可以在plot( )內(nèi)增加下列color顏色參數(shù)設(shè)定,下列是常見(jiàn)的色彩。

下列是常見(jiàn)的樣式。

上述可以混合使用,例如‘r-.’代表紅色虛點(diǎn)線。
程序?qū)嵗齝h1_9.py:采用不同色彩與線條樣式繪制圖表。

執(zhí)行結(jié)果

上述第10行最右邊的‘k.’代表繪制黑點(diǎn)而不是繪制線條,讀者也可以使用不同顏色繪制散點(diǎn)圖,1-3節(jié)也會(huì)介紹另一個(gè)方法scatter( )繪制散點(diǎn)圖。上述格式應(yīng)用是很靈活的,如果我們使用‘-*’可以繪制線條,同時(shí)在指定點(diǎn)加上星星標(biāo)記。注:如果沒(méi)有設(shè)定顏色,系統(tǒng)會(huì)自行配置顏色。
程序?qū)嵗齝h1_10.py:重新設(shè)計(jì)ch1_9.py繪制線條,同時(shí)為各個(gè)點(diǎn)加上標(biāo)記,程序重點(diǎn)是第10行。

執(zhí)行結(jié)果

1-2-7 刻度設(shè)計(jì)
目前,所有圖表的x軸和y軸的刻度皆是plot( )方法針對(duì)所輸入的參數(shù)默認(rèn)設(shè)定的,請(qǐng)先參考下列實(shí)例。
程序?qū)嵗齝h1_11.py:假設(shè)3大品牌車(chē)輛2021—2023年的銷(xiāo)售數(shù)據(jù)如下:
Benz 3367 4120 5539
BMW 4000 3590 4423
Lexus 5200 4930 5350
請(qǐng)將上述數(shù)據(jù)繪制成圖表。

執(zhí)行結(jié)果

上述程序最大的遺憾是x軸的刻度,對(duì)我們而言,其實(shí)只要有2021、2022、2023這3個(gè)刻度即可,還好可以使用pyplot模塊的xticks( )、yticks( )分別設(shè)定x、y軸刻度,可參考下列實(shí)例。
程序?qū)嵗齝h1_12.py:重新設(shè)計(jì)ch1_11.py,自行設(shè)定刻度,這個(gè)程序的重點(diǎn)是第9行,將seq列表當(dāng)作參數(shù)放在plt.xticks( )內(nèi)。

執(zhí)行結(jié)果

1-2-8 圖例legend( )
本章所建立的圖表,應(yīng)該說(shuō)已經(jīng)很好了,缺點(diǎn)是缺乏各種線條代表的意義,在Excel中稱圖例(legend),下列筆者將直接以實(shí)例說(shuō)明。
程序?qū)嵗齝h1_13.py:為ch1_12.py建立圖例。

執(zhí)行結(jié)果

這個(gè)程序最大不同在第10~12行,下列是以第10行解釋。

上述調(diào)用plt.plot( )時(shí)需同時(shí)設(shè)定label,最后使用第13行的方式執(zhí)行l(wèi)egend( )圖例的調(diào)用。其中參數(shù)loc可以設(shè)定圖例的位置,可以有下列設(shè)定方式:

如果省略loc設(shè)定,則使用預(yù)設(shè)‘best’,在應(yīng)用時(shí)可以使用設(shè)定整數(shù)值,例如:設(shè)定loc=0與上述效果相同。若是顧慮程序可讀性,建議使用文字字符串方式設(shè)定,當(dāng)然也可以直接設(shè)定數(shù)字。
程序?qū)嵗齝h1_13_1.py:在ch1_13.py的基礎(chǔ)上省略loc設(shè)定。

執(zhí)行結(jié)果 與ch1_13.py相同。
程序?qū)嵗齝h1_13_2.py:在ch1_13.py的基礎(chǔ)上設(shè)定loc=0。

執(zhí)行結(jié)果 與ch1_13.py相同。
程序?qū)嵗齝h1_13_3.py:在ch1_13.py的基礎(chǔ)上設(shè)定圖例在右上角。

執(zhí)行結(jié)果 下方左圖。

程序?qū)嵗齝h1_13_4.py:在ch1_13.py的基礎(chǔ)上設(shè)定圖例在左邊中央。

執(zhí)行結(jié)果 如上右圖。
經(jīng)過(guò)上述解說(shuō),我們已經(jīng)可以將圖例放在圖表內(nèi)了。如果想將圖例放在圖表外,需要先理解坐標(biāo),在圖表內(nèi)左下角位置坐標(biāo)是(0,0),右上角位置坐標(biāo)是(1,1),概念如下:

首先需使用bbox_to_anchor( )當(dāng)作legend( )的一個(gè)參數(shù),設(shè)定錨點(diǎn)(anchor),也就是圖例位置,例如:如果我們想將圖例放在圖表右上角外側(cè),需設(shè)定loc=‘upper left’,然后設(shè)定bbox_to_anchor(1,1)。
程序?qū)嵗齝h1_13_5.py:在ch1_13.py的基礎(chǔ)上將圖例放在圖表右上角外側(cè)。

執(zhí)行結(jié)果 下方左圖。

上述最大的缺點(diǎn)是由于圖表與Figure 1的留白不足,造成無(wú)法完整顯示圖例。matplotlib模塊內(nèi)有tight_layout( )函數(shù),可利用設(shè)定pad參數(shù)在圖表與Figure 1間設(shè)定留白。
程序?qū)嵗齝h1_13_6.py:設(shè)定pad=7,重新設(shè)計(jì)ch1_13_5.py。

執(zhí)行結(jié)果 可參考如上右圖。
很明顯圖例顯示不完整的問(wèn)題改善了。如果將pad改為h_pad/w_pad可以分別設(shè)定高度/寬度的留白。
1-2-9 保存與開(kāi)啟文件
圖表設(shè)計(jì)完成,可以使用savef i g( )保存文件,這個(gè)方法需放在show( )的前方,表示先儲(chǔ)存再顯示圖表。
程序?qū)嵗齝h1_14.py:擴(kuò)充ch1_13.py,在屏幕顯示圖表前,先將圖表存入目前文件夾的out1_14.jpg。

執(zhí)行結(jié)果
讀者可以在ch1文件夾看到out1_14.jpg文件。
上述plt.savef i g( )中第一個(gè)參數(shù)是所存的文件名,第二個(gè)參數(shù)是將圖表外多余的空間刪除。
要開(kāi)啟文件可以使用matplotlib.image模塊,可以參考下列實(shí)例。
程序?qū)嵗齝h1_15.py:開(kāi)啟out1_14.jpg文件。

執(zhí)行結(jié)果
上述程序可以順利開(kāi)啟out1_14.jpg文件。
1-2-10 在圖上標(biāo)記文字
在繪制圖表過(guò)程中,有時(shí)需要在圖上標(biāo)記文字,這時(shí)可以使用text( )函數(shù),此函數(shù)基本格式如下:

x,y是文字輸出的左下角坐標(biāo),它不是絕對(duì)坐標(biāo),是相對(duì)坐標(biāo),大小會(huì)隨著坐標(biāo)刻度增減。
程序?qū)嵗齝h1_15_1.py:增加文字重新設(shè)計(jì)ch1_3_1.py。

執(zhí)行結(jié)果

1-3 繪制散點(diǎn)圖scatter( )
前方介紹了可以使用plot( )繪制散點(diǎn)圖,本節(jié)將介紹繪制散點(diǎn)圖的常用方法scatter( )。
1-3-1 基本散點(diǎn)圖的繪制
繪制散點(diǎn)圖可以使用scatter( ),基本語(yǔ)法如下(更多參數(shù)后面章節(jié)會(huì)解說(shuō)):
scatter(x, y, s, c, cmap)
x,y:在(x,y)位置繪圖。 c:顏色,可以參考1-2-6節(jié)。
s:繪圖點(diǎn)的大小,預(yù)設(shè)是20。 cmap:彩色圖表,可以參考1-4-5節(jié)。
程序?qū)嵗齝h1_16.py:在坐標(biāo)軸(5,5)繪制一個(gè)點(diǎn)。

執(zhí)行結(jié)果

1-3-2 繪制系列點(diǎn)
如果我們想繪制系列點(diǎn),可以將系列點(diǎn)的x軸值放在一個(gè)列表,y軸值放在另一個(gè)列表,然后將這2個(gè)列表作為參數(shù)放在scatter( )即可。
程序?qū)嵗齝h1_17.py:繪制系列點(diǎn)的應(yīng)用。

執(zhí)行結(jié)果

在程序設(shè)計(jì)時(shí),有些系列點(diǎn)的坐標(biāo)可能是由程序產(chǎn)生,其實(shí)應(yīng)用方式是一樣的。另外,可以在scatter( )內(nèi)增加color(也可用c)參數(shù),可以設(shè)定點(diǎn)的顏色。
程序?qū)嵗齝h1_18.py:繪制黃色的系列點(diǎn),這個(gè)系列點(diǎn)有100個(gè)點(diǎn),x軸的點(diǎn)由range(1,101)產(chǎn)生,相對(duì)應(yīng)y軸的值則是x的平方值。

執(zhí)行結(jié)果

上述程序第6行是直接指定色彩,也可以使用RGB(Red,Green,Blue)顏色模式設(shè)定色彩,RGB( )內(nèi)每個(gè)參數(shù)數(shù)值是0~1。
1-3-3 設(shè)定繪圖區(qū)間
可以使用axis( )設(shè)定繪圖區(qū)間,語(yǔ)法格式如下:
axis([xmin, xmax, ymin, ymax]) # 分別代表x軸和y軸的最小和最大區(qū)間
程序?qū)嵗齝h1_19.py:設(shè)定繪圖區(qū)間為[0,100,0,10000]的應(yīng)用,讀者可以將這個(gè)執(zhí)行結(jié)果與ch1_18.py做比較。

執(zhí)行結(jié)果

上述程序第5行是依據(jù)xpt列表產(chǎn)生ypt列表值的方式,由于網(wǎng)絡(luò)上有很多文章使用數(shù)組方式產(chǎn)生圖表列表,所以下一節(jié)筆者將對(duì)此做出說(shuō)明,期待可為讀者建立基礎(chǔ)。
1-4 numpy模塊
numpy是Python的一個(gè)擴(kuò)充模塊,可以支持多維度空間的數(shù)組與矩陣運(yùn)算,本節(jié)筆者將對(duì)其最簡(jiǎn)單的產(chǎn)生數(shù)組的功能做解說(shuō),由此可以將這個(gè)功能擴(kuò)充到數(shù)據(jù)圖表的設(shè)計(jì)。使用前我們需導(dǎo)入numpy模塊,如下所示:
import numpy as np
1-4-1 建立一個(gè)簡(jiǎn)單的數(shù)組linspace( )和arange( )
在numpy模塊中最基本的就是linspace( )方法,使用它可以很方便地產(chǎn)生等距的數(shù)組,它的語(yǔ)法如下:
linspace(start, end, num)
start是起始值,end是結(jié)束值,num是設(shè)定產(chǎn)生多少個(gè)等距點(diǎn)的數(shù)組值,num的默認(rèn)值是50。
在網(wǎng)絡(luò)上閱讀他人使用Python設(shè)計(jì)的圖表時(shí),常看到的產(chǎn)生數(shù)組的方法是arange( )。其語(yǔ)法如下:

start是起始值,如果省略默認(rèn)值是0。stop是結(jié)束值,但是所產(chǎn)生的數(shù)組不包含此值。step是數(shù)組相鄰元素的間距,如果省略默認(rèn)值是1。
程序?qū)嵗齝h1_20.py:建立0, 1, …, 9, 10的數(shù)組。

執(zhí)行結(jié)果

1-4-2 繪制波形
中學(xué)數(shù)學(xué)中我們有學(xué)過(guò)sin( )和cos( )概念,其實(shí)有了數(shù)組數(shù)據(jù),我們可以很方便地繪制正弦和余弦的波形變化。單純繪點(diǎn)可以使用scatter( )方法,此方法使用格式如下:
scatter(x, y, marker=‘.’, c(或color)=‘顏色’) # marker如果省略會(huì) 使用預(yù)設(shè)
程序?qū)嵗齝h1_21.py:繪制sin( )和cos( )的波形,在這個(gè)實(shí)例中調(diào)用plt.scatter( )方法2次,相當(dāng)于也可以繪制2次波形圖表。

執(zhí)行結(jié)果

其實(shí)一般在繪制波形時(shí),最常用的還是plot( )方法。
程序?qū)嵗齝h1_22.py:使用系統(tǒng)默認(rèn)顏色,繪制不同波形的應(yīng)用。

執(zhí)行結(jié)果

1-4-3 建立不等寬度的散點(diǎn)圖
在scatter( )方法中,(x,y)的數(shù)據(jù)可以是列表也可以是矩陣,預(yù)設(shè)所繪制點(diǎn)大小s的值是20,這個(gè)s可以是一個(gè)值也可以是一個(gè)數(shù)組數(shù)據(jù),當(dāng)它是一個(gè)數(shù)組數(shù)據(jù)時(shí),利用更改數(shù)組值的大小,我們就可以建立不同大小的散點(diǎn)圖。
在我們使用Python繪制散點(diǎn)圖時(shí),如果在兩個(gè)點(diǎn)之間繪制了上百或上千個(gè)點(diǎn),則可以產(chǎn)生繪制線條的視覺(jué)效果,如果每個(gè)點(diǎn)的大小不同,且依一定規(guī)律變化,則有特別的效果。
程序?qū)嵗齝h1_23.py:建立一個(gè)不等寬度的圖形。

執(zhí)行結(jié)果

1-4-4 填滿區(qū)間
在繪制波形時(shí),如要填滿區(qū)間,此時(shí)可以使用matplotlib模塊的f i ll_between( )方法,基本語(yǔ)法如下:
fill_between(x, y1, y2, color, alpha, options, … ) # options是其他參數(shù)
上述會(huì)填滿所有相對(duì)x軸數(shù)列y1至y2的區(qū)間,如果不指定填滿顏色,則會(huì)使用預(yù)設(shè)的線條顏色填滿,通常填滿顏色會(huì)用較淡的顏色,所以可以設(shè)定alpha參數(shù)將顏色調(diào)淡。
程序?qū)嵗齝h1_24.py:填滿區(qū)間0~y,所使用的y軸值是函數(shù)式sin(3x)。

執(zhí)行結(jié)果

程序?qū)嵗齝h1_25.py:填滿區(qū)間-1~y,所使用的y軸值是函數(shù)式sin(3x)。

執(zhí)行結(jié)果

1-4-5 色彩映射
至今我們針對(duì)一組數(shù)組或列表所繪制的圖表皆是單色,以ch1_23.py第8行為例,色彩設(shè)定是color=(0,1,0),這是固定顏色的用法。在色彩的使用中,允許色彩隨著數(shù)據(jù)而做變化,此時(shí)色彩的變化是根據(jù)所設(shè)定的色彩映射值(color mapping)而定,例如有一個(gè)色彩映射值是rainbow,內(nèi)容如下:

在數(shù)組或列表中,數(shù)值低的值顏色在左邊,會(huì)隨數(shù)值變高往右邊移動(dòng)。當(dāng)然在程序設(shè)計(jì)中,我們需要在scatter( )中增加color設(shè)定參數(shù)c,這時(shí)color的值就變成一個(gè)數(shù)組或列表。然后我們需要增加參數(shù)cmap(英文是color map),這個(gè)參數(shù)主要是指定使用哪一種色彩映射值。
程序?qū)嵗齝h1_26.py:色彩映射的應(yīng)用。

執(zhí)行結(jié)果

色彩映射也可以設(shè)定根據(jù)x軸的值做變化,或根據(jù)y軸的值做變化,整個(gè)效果是不一樣的。
程序?qū)嵗齝h1_27.py:重新設(shè)計(jì)ch1_23.py,主要是設(shè)定固定點(diǎn)的寬度為50,將色彩改為依y軸值變化,同時(shí)使用hsv色彩映射表。

執(zhí)行結(jié)果 如下方左圖。

程序?qū)嵗齝h1_28.py:重新設(shè)計(jì)ch1_27.py,主要是將色彩改為依x軸值變化。

執(zhí)行結(jié)果 如上右圖。
目前matplotlib協(xié)會(huì)所提供的色彩映射內(nèi)容如下:
序列色彩映射表

序列2色彩映射表

直覺(jué)一致的色彩映射表

發(fā)散式的色彩映射表

定性色彩映射表

雜項(xiàng)色彩映射表

在大數(shù)據(jù)研究應(yīng)用中,可以將數(shù)據(jù)以圖表顯示,然后用色彩判斷整個(gè)數(shù)據(jù)的趨勢(shì)。在結(jié)束本節(jié)之前,筆者舉一個(gè)使用colormap繪制數(shù)組數(shù)據(jù)的實(shí)例,這個(gè)程序會(huì)使用下列方法。
imshow(img, cmap=‘xx’)
參數(shù)img可以是圖片,也可以數(shù)組數(shù)據(jù),此例是數(shù)組數(shù)據(jù)。這個(gè)函數(shù)常用在機(jī)器學(xué)習(xí)檢測(cè)神經(jīng)網(wǎng)絡(luò)的輸出中。
程序?qū)嵗齝h1_29.py:繪制矩形數(shù)組數(shù)據(jù)。

執(zhí)行結(jié)果

1-5 圖表顯示中文
matplotlib無(wú)法顯示中文,主要在于安裝此模塊時(shí)所配置的下列文件:
~Python37\Lib\site-packages\matplotlib\mpl-data\matplotlibrc
在此文件內(nèi)的font_sans-serif中沒(méi)有配置中文字體,我們可以在此字段增加中文字體,但是筆者不鼓勵(lì)更改系統(tǒng)內(nèi)建文件。筆者將使用動(dòng)態(tài)配置方式處理,讓圖表顯示中文字體。其實(shí)可以在程序內(nèi)增加下列程序代碼,rcParams( )方法可以為matplotply配置中文字體參數(shù),就可以顯示中文了。
from pylab import mlp # matplotlib的子模塊 mlp.rcParams[“font.sans-serif”] = [“SimHei”] # 黑體 mlp.rcParams[“axes.unicode_minus”] = False # 可以顯示負(fù)號(hào)
另外,每個(gè)要顯示的中文字符串需要在前面加上u。
程序?qū)嵗齝h1_30.py:重新設(shè)計(jì)ch1_13.py,以中文顯示報(bào)表。

執(zhí)行結(jié)果

- Hands-On Data Structures and Algorithms with JavaScript
- NativeScript for Angular Mobile Development
- 基于Swift語(yǔ)言的iOS App 商業(yè)實(shí)戰(zhàn)教程
- SAP BusinessObjects Dashboards 4.1 Cookbook
- VMware虛擬化技術(shù)
- 碼上行動(dòng):用ChatGPT學(xué)會(huì)Python編程
- 深入淺出React和Redux
- Building Wireless Sensor Networks Using Arduino
- Kubernetes源碼剖析
- Deep Learning with R Cookbook
- IDA Pro權(quán)威指南(第2版)
- Mastering Concurrency Programming with Java 9(Second Edition)
- SQL Server 2008中文版項(xiàng)目教程(第3版)
- 零基礎(chǔ)C#學(xué)習(xí)筆記
- WebStorm Essentials