iT邦幫忙

2022 iThome 鐵人賽

DAY 26
1
AI & Data

先別急著學 Python | The Secret to Success in Python系列 第 26

Ɖ26-布朗尼/ Numpy 常見四大類型介紹

  • 分享至 

  • xImage
  •  

從實作回到理論

你知道,在過去25天中,我們從最初的 Kaggle 進行資料 Insign 尋找,我們解析了各式不同的資料類型,並且找到合適的方法將他做分析。後續我們進行了資料分析後,輸出為 Excel 的方法,我們運用了非常多種方式去解析 Excel 與 CSV 的資料,採用了樞紐分析搭配群組與切片分割來理解資料可能類型,我們這段旅行中都是在說明實作的方式,我相信大家在過程中勢必會遇到不同的難題,而這個章節作為延伸,就是希望大家能夠快速的理解原先的核心概念和他所能帶來的不同操作方式。

延伸應用 Numpy

Python 中的數據操作基本就是 NumPy 數組操作:一些工具像 Pandas 都是依賴於 NumPy 數組建立起來的。本節會展示使用 NumPy 數組操作和訪問數據以及子數組的一些例子,包括切分、變形和組合,並且介紹 Numpy 的幾個主要四個分類。

1.NumPy : Attributes 屬性

首先我們來討論一些數組有用的屬性。我們從定義三個數組開始,一個一維的,一個二維的和一個三維的數組。我們採用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))

https://ithelp.ithome.com.tw/upload/images/20221010/201407403mEEWCJVHb.png

2.NumPy : Indexing & Slicing 數組切片

如我們可以使用中括號獲取單個元素值,我們也可以使用中括號的切片語法獲取子數組,切片的語法遵從標準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]

https://ithelp.ithome.com.tw/upload/images/20221010/20140740rylA9ieGmt.png

3.NumPy : Reshaping 改變數組的形狀

改變形狀是最方便的方式是用 reshape 方法實現。例如如果你希望將1~9的數放入一個 3×3 的數組裡面,你可以這樣做:注意,改變形狀要能成功,原始數組和新的形狀的數組的總長度size必須一樣。當可能的情況下,reshape會盡量使用原始數組的圖。

  • reshape: 最方便的方式,數組的常用操作是改變形狀。
  • newaxis: 屬性增加一個維度
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]

https://ithelp.ithome.com.tw/upload/images/20221010/20140740mCpbHxryrR.png

4.NumPy : Joining and splitting 數組的連接和切分

在 NumPy 中連接或者組合多個數組:

x = np.array([1, 2, 3])
y = np.array([3, 2, 1])
np.concatenate([x, y])

https://ithelp.ithome.com.tw/upload/images/20221010/20140740MQqtQ4717J.png

或者是切分數組:

x = [1, 2, 3, 99, 99, 3, 2, 1]
x1, x2, x3 = np.split(x, [3, 5]) # 在序號3和序號5處進行切分,返回三個數組
print(x1, x2, x3)

https://ithelp.ithome.com.tw/upload/images/20221010/20140740NNPrFiSDB1.png

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

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


Hi'Jerry均

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

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


上一篇
Ɖ25-布朗尼/ Numpy 多維陣列呈現
下一篇
Ɖ27-布朗尼/ Pandas 的數據結構 Series 與 Datafram
系列文
先別急著學 Python | The Secret to Success in Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言