免費學習推薦:python影片教學
##隨機漫步
這次我們將使用python產生隨機漫步數據,然後用matplotlib的方式將這些數據呈現出來。 隨機漫步每次行走都完全是隨機的,沒有明確的方向,結果是由一系列隨機決策決定的。你可以這樣認為,隨機漫步就是螞蟻在暈頭轉向的情況下,每次都沿著隨機的方向所經過的路徑。
創建RandomWalk()類別
為了模擬隨機漫步,我們創建一個RandownWalk的類,它隨機選擇前進的方向。這個類別需要三個屬性,其中一個是儲存隨機漫步次數的變量,其他兩個是列表,分別儲存隨機漫步經過的每個點的x座標和y座標。 RandomWalk類別只包含兩個方法,
init()和fill_walk(),其中後者計算隨機漫步經過的所有點,下面是__init__():
from random import choiceclass RandomWalk(): """一个生成随机漫步数据的类""" def __init__(self, number_points=5000): """初始化随机漫步的属性""" self.number_points = number_points # 所有随机漫步都始于(0,0) self.x_values = [0] self.y_values = [0]為做出隨機決策,我們將所有可能的選擇都儲存到一個清單中,並在每次做出決策時都使用choice()來決定使用哪種選擇,然後我們將隨機漫步的預設點數設定為5000,然後我們建立了兩個用於儲存x值和y值的列表,並讓每次漫步都是從(0,0)開始出發。
選擇方向
def fill_walk(self): """计算随机漫步中包含的所有点""" # 不断漫步,直到列表达到指定的长度 while len(self.x_values) 我們建立了一個循環,這個循環不斷進行,直到漫步包含所有需數量的點。這個方法的主要部分告訴python如何模擬四種漫步決定:向左走還是向右走?向上走還是向下走?沿著指定的方向走多遠? <p> 我們使用choice([1, -1])為x_direction選擇一個值,結果要麼是表示向右走的1,要麼是表示向左走的-1,接下來choice([0, 1, 2 , 3, 4])隨機選取一個0~4之間的數,告訴python沿著指定方向走多遠。 <br> 我們將移動方向乘以移動距離,以確定沿著x軸和y軸移動的距離。如果x_step為正,就會向右移動,為負向左移動,而為0將垂直移動,y_step為正向上移動,為負向下移動,為0則水平移動,如果兩個都為0那麼就以為在原地踏步,我們拒絕這種情況,接著執行下一次循環。 <br> 為取得隨機漫步的下一個點的x值,我們將x_step和x_values的最後一個值相加,對於y值也做同樣的處理。獲得下一個點的x值和y值之後,我們將它分別附加到列表x_values和y_values的末尾。 <br></p><p>繪製隨機漫步圖<strong></strong></p>我們將上面建立RandomWalk類別的py檔案命名為random_walk.py。 <p> 下面的程式碼將隨機漫步的所有點都繪製出來:<br></p><pre class="brush:php;toolbar:false">import matplotlib.pyplot as pltfrom random_walk import RandomWalk# 创建一个RandWalk实例,并将其包含的点都绘制出来rw = RandomWalk(5000)rw.fill_walk()plt.scatter(rw.x_values, rw.y_values, s=15)plt.show()我們首先導入了模組pyplot和RandomWalk類,然後創建了一個RandomWalk實例,並將其存儲到rw中,再調用fill_walk(),下圖就是顯示了包含了5000個點的隨機漫步圖。
模擬多次隨機漫步
每次隨機漫步都不相同,因此探索可能產生的各種模式很有趣。在不多次執行程式的情況下使用前面的程式碼模擬多次隨機漫步,一種方法就是將前面的程式碼放進一個while循環中,如下所示:import matplotlib.pyplot as pltfrom random_walk import RandomWalkwhile True: # 创建一个RandWalk实例,并将其包含的点都绘制出来 rw = RandomWalk(5000) rw.fill_walk() plt.scatter(rw.x_values, rw.y_values, s=1) plt.show() keep_running = input('Make another walk? (y/n) : ') if keep_running == 'n': break這些程式碼模擬一次隨機漫步,如果你輸入y則再繼續模擬生成一次隨機漫步,輸入n的話就退出程式了。
給點著色
我們將使用顏色映射出漫步中個點的先後順序,並刪除各個點的黑色輪廓,讓他們顏色更加明顯。為根據漫步中各點的先後順序進行著色,我們傳遞參數c,並設定一個列表,其中包含各點的先後順序。由於這些點都是按順序繪製的,因此參數c指定的清單只需包含數字1~5000即可。如下所示:import matplotlib.pyplot as pltfrom random_walk import RandomWalkwhile True: # 创建一个RandWalk实例,并将其包含的点都绘制出来 rw = RandomWalk(5000) rw.fill_walk() point_numbers = list(range(rw.number_points)) plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues, edgecolors='none', s=1) plt.show() keep_running = input('Make another walk? (y/n) : ') if keep_running == 'n': break我們使用range產生了一個數字列表,其中包含的數字與漫步包含的點數相同。接下來,我們將這個清單儲存到point_numbers中,以方便使用它來設定每個漫步點的顏色。我們將每個參數c設為point_numbers,指定顏色映射為藍色,並傳遞實參edgecolors以刪除每個點周圍的輪廓。最終的隨機漫步圖由淺藍色漸變為深藍色。如下圖所示:
重新繪製起點和終點
#除了給隨機漫步各個點著色,以指出他們的先後順序外,如果還能呈現隨機漫步的終點和起點就更好了。為此,可在繪製隨機漫步圖後重新繪製隨機漫步的起點和終點。我們讓起點和終點變得更大,並顯示為不同的顏色,以突出它們,如下所示:import matplotlib.pyplot as pltfrom random_walk import RandomWalkwhile True: # 创建一个RandWalk实例,并将其包含的点都绘制出来 rw = RandomWalk(5000) rw.fill_walk() point_numbers = list(range(rw.number_points)) plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues, edgecolors='none', s=1) # 突出起点和终点 plt.scatter(0, 0, c='green', edgecolors='none', s=100) plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none', s=100) plt.show() keep_running = input('Make another walk? (y/n) : ') if keep_running == 'n': break
为突出起点,我们使用绿色绘制点(0,0),并使其比其它点大。为突出终点,我们在漫步包含的最后一个x值和y值处绘制一个点,使其为红色,并比其它点大。运行代码,将准确知道每次随机漫步的起点和终点。
隐藏坐标轴
下面来隐藏坐标轴,以免我们注意点是坐标轴而不是随机漫步路径。要隐藏坐标做代码如下:
# 隐藏坐标轴plt.axes().get_xaxis().set_visible(False)plt.axes().get_yaxis().set_visible(False)
为修改坐标轴,使用函数plt.axes()来将每条坐标轴的可见性设置为False。图如下:
相关免费学习推荐:python教程(视频)
以上是python隨機漫步解說的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

Python和C 在内存管理和控制方面的差异显著。1.Python使用自动内存管理,基于引用计数和垃圾回收,简化了程序员的工作。2.C 则要求手动管理内存,提供更多控制权但增加了复杂性和出错风险。选择哪种语言应基于项目需求和团队技术栈。

Python在科學計算中的應用包括數據分析、機器學習、數值模擬和可視化。 1.Numpy提供高效的多維數組和數學函數。 2.SciPy擴展Numpy功能,提供優化和線性代數工具。 3.Pandas用於數據處理和分析。 4.Matplotlib用於生成各種圖表和可視化結果。

選擇Python還是C 取決於項目需求:1)Python適合快速開發、數據科學和腳本編寫,因其簡潔語法和豐富庫;2)C 適用於需要高性能和底層控制的場景,如係統編程和遊戲開發,因其編譯型和手動內存管理。

Python在數據科學和機器學習中的應用廣泛,主要依賴於其簡潔性和強大的庫生態系統。 1)Pandas用於數據處理和分析,2)Numpy提供高效的數值計算,3)Scikit-learn用於機器學習模型構建和優化,這些庫讓Python成為數據科學和機器學習的理想工具。

每天學習Python兩個小時是否足夠?這取決於你的目標和學習方法。 1)制定清晰的學習計劃,2)選擇合適的學習資源和方法,3)動手實踐和復習鞏固,可以在這段時間內逐步掌握Python的基本知識和高級功能。

Python在Web開發中的關鍵應用包括使用Django和Flask框架、API開發、數據分析與可視化、機器學習與AI、以及性能優化。 1.Django和Flask框架:Django適合快速開發複雜應用,Flask適用於小型或高度自定義項目。 2.API開發:使用Flask或DjangoRESTFramework構建RESTfulAPI。 3.數據分析與可視化:利用Python處理數據並通過Web界面展示。 4.機器學習與AI:Python用於構建智能Web應用。 5.性能優化:通過異步編程、緩存和代碼優

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。