NumPy 陣列建立方法與索引訪問詳解

小万哥丶發表於2024-05-06

NumPy 建立陣列

NumPy 中的核心資料結構是 ndarray,它代表多維陣列。NumPy 提供了多種方法來建立 ndarray 物件,包括:

使用 array() 函式

array() 函式是最常用的方法之一,它可以將 Python 列表、元組甚至其他陣列轉換為 ndarray 物件。

語法:

ndarray = np.array(data, dtype=dtype, order=order)

引數說明:

data:可以是 Python 列表、元組或其他陣列。
dtype:指定陣列元素的資料型別,預設為 float64
order:指定陣列元素的記憶體儲存順序,預設為 C 順序(行優先)。

示例:

import numpy as np

# 建立一維陣列
arr1 = np.array([1, 2, 3, 4, 5])

# 建立二維陣列
arr2 = np.array([[1, 2, 3], [4, 5, 6]])

# 建立三維陣列
arr3 = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

print(arr1)
print(arr2)
print(arr3)

輸出:

[1 2 3 4 5]
[[1 2 3]
 [4 5 6]]
[[[ 1  2  3]
  [ 4  5  6]]
 [[ 7  8  9]
  [10 11 12]]]

使用 zeros()ones() 函式

zeros()ones() 函式可以建立指定形狀和資料型別的全零或全一陣列。

語法:

ndarray = np.zeros(shape, dtype=dtype)
ndarray = np.ones(shape, dtype=dtype)

引數說明:

shape:指定陣列的形狀,可以是元組或列表。
dtype:指定陣列元素的資料型別,預設為 float64

示例:

import numpy as np

# 建立一個 3x4 的全零陣列
arr1 = np.zeros((3, 4))

# 建立一個 2x3 的全一陣列
arr2 = np.ones((2, 3))

print(arr1)
print(arr2)

輸出:

[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
[[1. 1. 1.]
 [1. 1. 1.]]

使用 empty() 函式

empty() 函式可以建立指定形狀的空陣列,但陣列元素的值未定義。

語法:

ndarray = np.empty(shape, dtype=dtype)

引數說明:

shape:指定陣列的形狀,可以是元組或列表。
dtype:指定陣列元素的資料型別,預設為 float64

示例:

import numpy as np

# 建立一個 3x4 的空陣列
arr = np.empty((3, 4))

print(arr)

輸出:

[[nan nan nan nan]
 [nan nan nan nan]
 [nan nan nan nan]]

使用特殊函式

NumPy 還提供了一些特殊函式來建立特定型別的陣列,例如:

arange():建立等差數列陣列。
linspace():建立線性間隔的陣列。
eye():建立單位矩陣。
diag():建立對角矩陣。

請參考 NumPy 文件瞭解有關這些函式的更多資訊。

練習

建立以下陣列:

一個包含 10 個元素的遞增整數陣列(從 0 到 9)。
一個包含 20 個元素的隨機浮點數陣列(範圍為 0 到 1)。
一個 3x3 的單位矩陣。

請在評論中分享您的答案。

Sure, here is the requested Markdown formatted content:

NumPy 陣列索引

NumPy 陣列可用於表示多維資料。訪問陣列元素是 NumPy 中常見操作之一。

訪問一維陣列元素

NumPy 陣列中的索引從 0 開始,這意味著第一個元素的索引為 0,第二個元素的索引為 1,依此類推。

要訪問一維陣列中的元素,可以使用方括號 [] 並指定元素的索引。

示例:

import numpy as np

# 建立一維陣列
arr = np.array([1, 2, 3, 4, 5])

# 訪問第一個元素
print(arr[0])  # 輸出:1

# 訪問第二個元素
print(arr[1])  # 輸出:2

# 訪問最後一個元素
print(arr[-1])  # 輸出:5

訪問二維陣列元素

要訪問二維陣列中的元素,可以使用逗號分隔的兩個索引:第一個索引表示行,第二個索引表示列。

示例:

import numpy as np

# 建立二維陣列
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 訪問第一行第一個元素
print(arr[0, 0])  # 輸出:1

# 訪問第二行第三列元素
print(arr[1, 2])  # 輸出:6

# 訪問最後一個元素
print(arr[-1, -1])  # 輸出:9

訪問三維及更高維陣列元素

對於三維及更高維陣列,可以使用逗號分隔的多個索引來訪問元素,每個索引表示相應維度的索引。

示例:

import numpy as np

# 建立三維陣列
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

# 訪問第一個陣列的第二個陣列的第三個元素
print(arr[0, 1, 2])  # 輸出:6

負索引

NumPy 還支援負索引,從陣列的末尾開始計數。

例如,要訪問二維陣列的最後一個元素,可以使用 arr[-1, -1]

練習

建立一個 5x5 的二維陣列 arr,並列印以下元素:

第一行的第一個元素
第二行的最後一個元素
第三列的第一個元素
第三個元素

在評論中分享您的程式碼和輸出。

最後

為了方便其他裝置和平臺的小夥伴觀看往期文章:

微信公眾號搜尋:Let us Coding,關注後即可獲取最新文章推送

看完如果覺得有幫助,歡迎點贊、收藏、關注

相關文章