連接具有不同資料類型的NumPy 陣列
建立單一NumPy 陣列來組合來自多個具有不同資料類型的陣列的資料可能是一項挑戰。一種常見的方法是使用 concatenate() 函數,但這可能會導致整個陣列轉換為單一資料類型,例如字串。這在記憶體使用方面可能效率較低。
解決方案:記錄數組
要在組合數組時保留原始資料類型,請考慮使用記錄數組。記錄數組可讓您建立具有命名列的結構化數組,每個列都有自己的資料類型。這種方法使您能夠透過名稱存取各個列,就像 Python 物件的屬性一樣。
要建立記錄數組,您可以使用numpy 模組中的rec.fromarrays() 函數:
<code class="python">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'))</code>
此程式碼建立名為Records 的記錄數組,其中包含兩列:具有字串資料類型的“keys”和具有整數資料類型的“data”。
結構化陣列
組合具有不同資料類型的陣列的另一個選項是直接建立結構化陣列。結構化數組類似於記錄數組,但不提供對各個列的屬性存取:
<code class="python">arr = np.array([('a', 0), ('b', 1)], dtype=([('keys', '|S1'), ('data', 'i8')]))</code>
此程式碼建立一個名為arr 的結構化數組,其中包含兩列:具有字串資料類型的“keys”和“data” ' 具有整數資料型別。
哪一種方法比較好?
適合您的特定用例的最佳方法取決於您的要求。記錄數組使用起來更方便,特別是當您需要按名稱存取各個列時。如果不需要屬性訪問,結構化數組的記憶體使用效率會更高。
以上是在 NumPy 數組串聯中保留資料類型:記錄數組與結構化數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!