NumPy - 陣列元素大小



NumPy 陣列元素大小

NumPy 陣列中的itemsize屬性指示陣列中每個元素的大小(以位元組為單位)。此大小由陣列元素的資料型別(例如,整數、浮點數)確定。

通過了解itemsize,您可以估計陣列的總記憶體消耗。這對於理解陣列的記憶體佈局和儲存需求非常重要,尤其是在處理大型資料集時。

訪問陣列元素大小

您可以使用itemsize屬性訪問 NumPy 陣列的itemsize。此屬性返回一個整數,表示陣列中每個元素的大小(以位元組為單位)。

示例

在下面的示例中,我們訪問整數陣列和浮點數陣列的itemsize:

import numpy as np

# Creating arrays with different data types
array_int32 = np.array([1, 2, 3], dtype=np.int32)
array_float64 = np.array([1.0, 2.0, 3.0], dtype=np.float64)

# Checking itemsize
print("Itemsize of int32 array:", array_int32.itemsize)
print("Itemsize of float64 array:", array_float64.itemsize)

獲得的輸出如下:

Itemsize of int32 array: 4
Itemsize of float64 array: 8

計算itemsize記憶體使用情況

要計算陣列佔用的總記憶體,您可以將“itemsize”乘以陣列中的元素總數。

例如,如果一個數組有“1000”個元素,itemsize 為“8”位元組,則該陣列使用的總記憶體為“1000 * 8” = “8000”位元組。

示例

在這個例子中,我們計算一個二維陣列的總記憶體使用情況:

import numpy as np

# Create a 2D array
array_2d = np.array([[1, 2], [3, 4]], dtype=np.float32)

# Calculate total memory usage
total_memory_usage = array_2d.size * array_2d.itemsize
print(f"Total memory usage: {total_memory_usage} bytes")

這將產生以下結果:

Total memory usage: 16 bytes

不同資料型別的itemsize

在 NumPy 中,不同的資料型別具有不同的 itemsize 值。例如:

  • np.int8 的 itemsize 為 1 位元組。
  • np.int16 的 itemsize 為 2 位元組。
  • np.float64 的 itemsize 為 8 位元組。
  • np.complex128 的 itemsize 為 16 位元組。

示例

在下面的示例中,我們建立具有不同資料型別的陣列,然後檢查每個陣列的itemsize:

import numpy as np

# Creating arrays with different data types
array_int8 = np.array([1, 2, 3], dtype=np.int8)
array_int16 = np.array([1, 2, 3], dtype=np.int16)
array_uint32 = np.array([1, 2, 3], dtype=np.uint32)
array_float16 = np.array([1.0, 2.0, 3.0], dtype=np.float16)
array_complex128 = np.array([1+2j, 3+4j, 5+6j], dtype=np.complex128)

# Checking itemsize
print("Itemsize of int8 array:", array_int8.itemsize)
print("Itemsize of int16 array:", array_int16.itemsize)
print("Itemsize of uint32 array:", array_uint32.itemsize)
print("Itemsize of float16 array:", array_float16.itemsize)
print("Itemsize of complex128 array:", array_complex128.itemsize)

獲得的輸出如下:

Itemsize of int8 array: 1
Itemsize of int16 array: 2
Itemsize of uint32 array: 4
Itemsize of float16 array: 2
Itemsize of complex128 array: 16

透過修改資料型別來更改itemsize

透過修改陣列的資料型別,您可以更改其itemsize,這會影響每個元素佔用的記憶體量,以及陣列的總記憶體使用量。

您可以使用astype()函式更改NumPy陣列的資料型別。此函式接受您要將陣列轉換到的目標資料型別。

示例

在下面的示例中,我們將陣列的資料型別從“int32”更改為“int8”,並檢查該陣列的itemsize:

import numpy as np

# Original array with int32
array_original = np.array([1, 2, 3], dtype=np.int32)
print(f"Original itemsize: {array_original.itemsize} bytes")

# Change data type to int8
array_new = array_original.astype(np.int8)
print(f"New itemsize: {array_new.itemsize} bytes")

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

Original itemsize: 4 bytes
New itemsize: 1 bytes
廣告
© . All rights reserved.