在NumPy 中組合具有多種資料類型的陣列
將包含不同資料類型的陣列連接成單一陣列,每列中具有相應的數據類型一個挑戰。不幸的是,使用 np.concatenate() 的常見方法會將整個數組轉換為字串資料類型,從而導致記憶體效率低下。
要克服此限制,一個可行的解決方案是使用記錄數組或結構化數組。
記錄數組
記錄數組允許透過屬性存取各個資料欄位。透過指定每個欄位的資料類型,可以將多個資料類型組合在一個陣列中:
import numpy as np
a = np.array(['a', 'b', 'c', 'd', 'e'])
b = np.arange(5)
records = np.rec.fromarrays((a, b), names=('keys', 'data'))
print(records)
輸出:
rec.array([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)], dtype=[('keys', '|S1'), ('data', '<i8')])
結構化數組
結構化數組是類似,提供定義每列資料類型的能力。但是,它們不支援像記錄數組那樣的屬性存取:
arr = np.array([('a', 0), ('b', 1)],
dtype=([('keys', '|S1'), ('data', 'i8')]))
print(arr)
輸出:
array([('a', 0), ('b', 1)], dtype=[('keys', '|S1'), ('data', '<i8')])
在記錄陣列與結構化陣列之間進行選擇
記錄數組和結構化數組之間的選擇取決於各個用例。記錄數組為屬性存取提供了便利,而結構化數組可能更適合更複雜的資料結構。這兩種方法都提供了一種在 NumPy 中將陣列與不同資料類型組合的便捷方法,從而提供資料操作的靈活性和效率。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3