你知道,在過去25天中,我們從最初的 Kaggle 進行資料 Insign 尋找,我們解析了各式不同的資料類型,並且找到合適的方法將他做分析。後續我們進行了資料分析後,輸出為 Excel 的方法,我們運用了非常多種方式去解析 Excel 與 CSV 的資料,採用了樞紐分析搭配群組與切片分割來理解資料可能類型,我們這段旅行中都是在說明實作的方式,我相信大家在過程中勢必會遇到不同的難題,而這個章節作為延伸,就是希望大家能夠快速的理解原先的核心概念和他所能帶來的不同操作方式。
Python 中的數據操作基本就是 NumPy 數組操作:一些工具像 Pandas 都是依賴於 NumPy 數組建立起來的。本節會展示使用 NumPy 數組操作和訪問數據以及子數組的一些例子,包括切分、變形和組合,並且介紹 Numpy 的幾個主要四個分類。
首先我們來討論一些數組有用的屬性。我們從定義三個數組開始,一個一維的,一個二維的和一個三維的數組。我們採用NumPy的隨機數產生器來創建數組,產生之前我們會給定一個隨機種子,這樣來保證每次代碼運行的時候都能得到相同的數組:
# np.random.randint(low, high, size)
np.random.randint(0, 10, (1,2))
np.random.randint(0, 10, (3,3))
np.random.randint(10, size=6)
np.random.randint(10, size=(3, 4))
如我們可以使用中括號獲取單個元素值,我們也可以使用中括號的切片語法獲取子數組,切片的語法遵從標準Python列表的切片語法格式;對於一個數組x進行切片:如果三個參數沒有設置值的話,默認值分別是start=0,stop=維度的長度,step=1。 x[start:stop:step]。下方例子我們可以用 [5:8] 進行數組切片。
import numpy as np
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr[5]
arr[5:8]
改變形狀是最方便的方式是用 reshape 方法實現。例如如果你希望將1~9的數放入一個 3×3 的數組裡面,你可以這樣做:注意,改變形狀要能成功,原始數組和新的形狀的數組的總長度size必須一樣。當可能的情況下,reshape會盡量使用原始數組的圖。
import numpy as np
arr = np.arange(1, 10)
arr
得到輸出 array([1, 2, 3, 4, 5, 6, 7, 8, 9])
arr.reshape((3, 3))
arr[np.newaxis, :]
arr[:, np.newaxis]
在 NumPy 中連接或者組合多個數組:
x = np.array([1, 2, 3])
y = np.array([3, 2, 1])
np.concatenate([x, y])
或者是切分數組:
x = [1, 2, 3, 99, 99, 3, 2, 1]
x1, x2, x3 = np.split(x, [3, 5]) # 在序號3和序號5處進行切分,返回三個數組
print(x1, x2, x3)
今年沒組團,每一筆一字矢志不渝的獻身精神都是為歷史書寫下新頁,有空的話可以走走逛逛我們去年寫的文章。
Jerry 據說是個僅佔人口的 4% 人口的 INFP 理想主義者,總是從最壞的生活中尋找最好的一面,想方設法讓世界更好,內心的火焰和熱情可以光芒四射,畢業後把人生暫停了半年,緩下腳步的同時找了份跨領域工作。偶而散步、愛跟小動物玩耍。曾立過很多志,最近是希望當一個有夢想的人。
謝謝你的時間「訂閱,追蹤和留言」都是陪伴我走過 30 天鐵人賽的精神糧食。