NumPy 陣列切片
NumPy 陣列切片用於從陣列中提取子集。它類似於 Python 中的列表切片,但支援多維陣列。
一維陣列切片
要從一維陣列中提取子集,可以使用方括號 []
並指定切片。切片由起始索引、結束索引和可選步長組成,用冒號 :
分隔。
語法:
arr[start:end:step]
start
:起始索引(預設為 0)。end
:結束索引(不包括)。step
:步長(預設為 1)。
示例:
import numpy as np
# 建立一維陣列
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 從第二個元素到第五個元素(不包括)
print(arr[1:5]) # 輸出:array([2, 3, 4])
# 從頭到尾,每隔一個元素
print(arr[::2]) # 輸出:array([1, 3, 5, 7, 9])
# 從倒數第三個元素到倒數第一個元素
print(arr[-3:-1]) # 輸出:array([8, 9])
二維陣列切片
要從二維陣列中提取子集,可以使用逗號分隔的兩個索引,每個索引表示相應維度的切片。
語法:
arr[start_row:end_row, start_col:end_col:step]
start_row
:起始行索引(預設為 0)。end_row
:結束行索引(不包括)。start_col
:起始列索引(預設為 0)。end_col
:結束列索引(不包括)。step
:步長(預設為 1)。
示例:
import numpy as np
# 建立二維陣列
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 從第二行到第三行,第一列到第三列(不包括)
print(arr[1:3, 0:3]) # 輸出:array([[4, 5, 6], [7, 8, 9]])
# 從第一行到第三行,每隔一列
print(arr[::2, :]) # 輸出:array([[1, 3, 5], [7, 9]])
# 從第一行到第三行,第二列
print(arr[:, 1]) # 輸出:array([2, 5, 8])
練習
建立一個 5x5 的二維陣列 arr
,並列印以下子集:
- 第一行的所有元素
- 第二列的所有元素
- 從左上角到右下角的對角線元素
- 2x2 的子陣列,從第二行第三列開始
在評論中分享您的程式碼和輸出。
Sure, here is the requested Markdown formatted content:
NumPy 資料型別
NumPy 陣列由同型別元素組成,並具有指定的資料型別。資料型別定義了陣列中元素的儲存方式和允許的操作。
NumPy 中的資料型別
NumPy 具有比 Python 更豐富的基本資料型別,並使用首字母大寫字元來表示它們:
i
: 整數(int)b
: 布林值(bool)u
: 無符號整數(unsigned int)f
: 浮點數(float)c
: 複數浮點數(complex float)m
: 時間差(timedelta)M
: 日期時間(datetime)O
: 物件(object)S
: 字串(string)U
: Unicode 字串(unicode string)V
: 可變長度位元組(void)
檢查陣列的資料型別
NumPy 陣列具有一個屬性 dtype
,用於獲取陣列元素的資料型別。
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr.dtype)
輸出:
int32
使用指定資料型別建立陣列
我們可以使用 np.array()
函式並指定 dtype
引數來建立具有指定資料型別的陣列。
import numpy as np
arr = np.array([1, 2, 3, 4, 5], dtype='float64')
print(arr)
print(arr.dtype)
輸出:
[1. 2. 3. 4. 5.]
float64
轉換陣列的資料型別
我們可以使用 astype()
方法轉換現有陣列的資料型別。
import numpy as np
arr = np.array([1.1, 2.2, 3.3, 4.4, 5.5])
new_arr = arr.astype(int)
print(new_arr)
print(new_arr.dtype)
輸出:
[1 2 3 4 5]
int32
NumPy 資料型別簡表
資料型別 | 字元 | 描述 |
---|---|---|
整數 | i |
有符號整數 |
布林值 | b |
True 或 False |
無符號整數 | u |
無符號整數 |
浮點數 | f |
固定長度浮點數 |
複數浮點數 | c |
複數浮點數 |
時間差 | m |
時間間隔 |
日期時間 | M |
日期和時間 |
物件 | O |
Python 物件 |
字串 | S |
固定長度字串 |
Unicode 字串 | U |
可變長度 Unicode 字串 |
可變長度位元組 | V |
用於其他型別的固定記憶體塊 |
練習
建立以下 NumPy 陣列,並列印它們的元素和資料型別:
- 一個包含 10 個隨機整數的陣列。
- 一個包含 5 個布林值的陣列。
- 一個包含 7 個複雜數的陣列。
- 一個包含 10 個日期時間物件的陣列。
在評論中分享您的程式碼和輸出。
最後
為了方便其他裝置和平臺的小夥伴觀看往期文章:
微信公眾號搜尋:Let us Coding
,關注後即可獲取最新文章推送
看完如果覺得有幫助,歡迎點贊、收藏、關注