iT邦幫忙

2022 iThome 鐵人賽

DAY 25
1

布朗尼 Chocolate brownie

邁入倒數的五天了,轉眼間發現30天的挑戰賽其實過得非常快,許多內容皆在轉眼間。而最後一篇章節我所要講的主題稱為布朗尼(brownie),布朗尼作為餐點的最後甜點,小巧精緻卻不搶主食風采,雖迷你卻能讓你在舌尖上轉圜那熟稔的味道。

延伸應用 Numpy

Numpy 這個主題非常廣泛:數據集可能來自非常不同的來源和非常不同的格式,包括文檔的集合,圖像的集合,聲音片段的集合,數值測量的集合,甚至其他任何東西的集合。儘管數據集有著超出想像的異質性,我們還是可以將所有的數據抽象成為數值組成的數組。

因此,有效的存儲和處理數值數組對於數據科學來說是最根本的能力。我們接下來會討論Python中具備這樣強大功能的特殊工具:NumPy和Pandas (Numerical Python),它提供了強大的接口供我們存儲和操作非稀疏數據集合。在某些情況下,NumPy的數組表現得就像Python內建的列表,但是NumPy數組在存儲和操作大量數據集合的時候提供了有效得多的功能和性能。 NumPy數組是Python的數據科學領域工具鏈的核心,很多其他的工具都是在它的基礎上構建的,因此無論你感興趣的是數據科學的哪個領域,NumPy都值得你花時間進行鑽研。

創立多維陣列 Creating Arrays

我們可以使用np.array來將一個Python列表變成一個數組,記住和Python列表不同,NumPy數組只能含有同一種類型的數據。如果類型不一樣,NumPy會嘗試向上擴展類型(下面例子中會將整數向上擴展為浮點數):

import numpy as np
np.array([1, 4, 2, 5, 3])        #1D
np.array([[1,2,3], [4,5,6]])     #2D
np.array([[[1,2,3], [5,6,7]], [[1,2,3], [5,6,7]]])    #3D
print("ndim: ", arr.ndim)  #數組的維度
print("shape:", arr.shape) #數組的形狀
print("size: ", arr.size)  #數組的長度
print("itemsize:", arr.itemsize, "bytes")
print("nbytes:", arr.nbytes, "bytes")

創立陣列 Scratch

使用NumPy的方法從頭創建數組會更加高效,特別對於大型數組來說。

np.zeros((3,4), dtype=float)  # zeros 將數組元素都填充為0
np.ones((3,4), dtype=float)   # ones  將數組元素都填充為1
np.full((3,4), 76)            # full  將數組元素都填充為x
np.empty((3, 4))          
np.eye(2)                     #自動完程同步矩陣列 1x1 2x2 3x3
  • arange 創建一段序列值包含[起始,結尾,步長]
np.arange(10)           #From 0-10
np.arange(0, 20, 2)     #From 0-20 step 2
  • linspace 創建一段序列值進行平均劃分 [起始,結尾,共有幾個元素]
np.linspace(0, 1, 5)

轉換陣列 Transposing Arrays and Swapping Axes

arr.T
np.dot(arr.T, arr)

實際利用二維陣列測試 Example

有一個很有用的場景,就是當你需要繪製一個二維函數的圖像時。如果我們希望定義一個函數 ?=?(?,?) ,broadcasting 可以被用來計算二維平面上每個網格的數值:

%matplotlib inline
import matplotlib.pyplot as plt

# x和y都是0~5範圍平均分的50個點
x = np.linspace(0, 5, 50)
y = np.linspace(0, 5, 50)[:, np.newaxis]
z = np.sin(x) ** 10 + np.cos(10 + y * x) * np.cos(x)

plt.imshow(z, origin='lower', extent=[0, 5, 0, 5],cmap='viridis')
plt.colorbar();

https://ithelp.ithome.com.tw/upload/images/20221009/20140740XkFVycgx73.png

謝謝大家的觀看,但歷史的痕跡會持續下去

今年沒組團,每一筆一字矢志不渝的獻身精神都是為歷史書寫下新頁,有空的話可以走走逛逛我們去年寫的文章。


Hi'Jerry均

Jerry 據說是個僅佔人口的 4% 人口的 INFP 理想主義者,總是從最壞的生活中尋找最好的一面,想方設法讓世界更好,內心的火焰和熱情可以光芒四射,畢業後把人生暫停了半年,緩下腳步的同時找了份跨領域工作。偶而散步、愛跟小動物玩耍。曾立過很多志,最近是希望當一個有夢想的人。

謝謝你的時間「訂閱,追蹤和留言」都是陪伴我走過 30 天鐵人賽的精神糧食。


上一篇
Ɖ24-溫沙拉/ 自定義欄目大小與內容
下一篇
Ɖ26-布朗尼/ Numpy 常見四大類型介紹
系列文
先別急著學 Python | The Secret to Success in Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言