NumPy - 陣列大小



NumPy 陣列大小

NumPy 陣列的大小是指陣列中包含的元素總數。理解陣列的大小對於執行各種操作(例如重塑、廣播和迭代元素)非常重要。

在本教程中,我們將討論如何確定和操作 NumPy 陣列的大小。

檢查陣列大小

NumPy 提供了 `size` 屬性來檢查陣列中的元素數量。此屬性返回一個整數,表示元素的總數,而不管其形狀如何。無論陣列是一維還是多維,`size` 始終提供所有現有元素的數量。

瞭解陣列的大小在各種情況下都很有用,例如迭代元素、重塑陣列和最佳化記憶體使用。

示例:迭代元素

當您需要迭代陣列中的每個元素時,瞭解大小可以幫助您定義迴圈的範圍。

import numpy as np

# Creating a 1D array
array = np.array([1, 2, 3, 4, 5])

# Iterating using the size attribute
for i in range(array.size):
   print(array[i])

以下是獲得的輸出:

1
2
3
4
5

示例:記憶體計算

您可以透過使用 NumPy 中的 "itemsize" 屬性將陣列的大小乘以每個元素的大小來計算陣列的記憶體消耗。

import numpy as np

array = np.ones((1000, 1000), dtype=np.float64)

memory_usage = array.size * array.itemsize
print("Memory usage in bytes:", memory_usage)

這將產生以下結果:

Memory usage in bytes: 8000000

NumPy 陣列大小與陣列形狀

雖然 `size` 屬性給出陣列中元素的總數,但 `shape` 屬性提供陣列的維度。陣列的大小可以透過將所有維度相乘來從形狀計算出來。

示例

在此示例中,我們分別使用 NumPy 的 "shape" 和 "size" 屬性來檢索陣列的形狀和大小。

import numpy as np

# Creating a 3D array
array = np.zeros((2, 3, 4))

# Checking the shape and size
print("Array shape:", array.shape)
print("Array size:", array.size)

陣列的形狀是 (2, 3, 4),大小是 2 * 3 * 4 = 24。

Array shape: (2, 3, 4)
Array size: 24

調整陣列大小

NumPy 中的 `resize()` 函式用於調整陣列大小。此函式就地更改陣列的形狀和大小,並且新形狀必須與元素總數相容。

如果新形狀大於原始形狀,則新陣列將填充原始陣列的重複副本。如果新形狀較小,則原始陣列將被截斷。

與僅更改陣列形狀而不更改其資料的 `reshape()` 函式不同,`resize()` 函式也可以更改陣列的大小,新增新元素或刪除現有元素。

示例:調整為較大陣列

在此示例中,原始陣列被調整為 "2x5" 陣列。新元素透過重複原始陣列來填充。

import numpy as np

# Creating a 1D array
array_1d = np.array([1, 2, 3])

# Resizing the array to a larger size
resized_array = np.resize(array_1d, (2, 5))

print("Original array:\n", array_1d)
print("Resized array:\n", resized_array)

執行上述程式碼後,我們將獲得以下輸出:

Original array:
 [1 2 3]
Resized array:
 [[1 2 3 1 2]
  [3 1 2 3 1]]

示例:調整為較小陣列

在這裡,原始 "2x3" 陣列被調整為 "2x2" 陣列。多餘的元素被截斷。

import numpy as np

# Creating a 2D array
array_2d = np.array([[1, 2, 3], [4, 5, 6]])

# Resizing the array to a smaller size
resized_array = np.resize(array_2d, (2, 2))

print("Original array:\n", array_2d)
print("Resized array:\n", resized_array)

產生的結果如下:

Original array:
 [[1 2 3]
  [4 5 6]]
Resized array:
 [[1 2]
  [3 4]]

示例:就地調整大小

在此示例中,原始陣列就地調整為 "2x5" 陣列。新元素填充為零。

import numpy as np

# Creating a 1D array
array_1d = np.array([1, 2, 3])

# In-place resizing the array to a larger size
array_1d.resize((2, 5))

print("Resized array:\n", array_1d)

我們將獲得如下所示的輸出:

Resized array:
 [[1 2 3 0 0]
  [0 0 0 0 0]]
廣告