如何連接不同資料類型的陣列並保持記憶體效率?

Barbara Streisand
發布: 2024-10-21 17:56:03
原創
603 人瀏覽過

How to Concatenate Arrays with Different Datatypes and Maintain Memory Efficiency?

連接具有多種資料類型的陣列

在處理不同類型的資料時,通常需要將它們組合成一個陣列。無需將整個數組轉換為單一資料類型即可有效率地完成此操作。

考慮以下場景:您有兩個數組,A 包含字串,B 包含整數。目標是建立一個組合數組combined_array,其中每列保留其原始資料類型。

使用np.concatenate 連接A 和B 時,會出現combined_array = np.concatenate((A, B), axis = 1)簡單來說,它默認將整個數組轉換為dtype=string,導致內存效率低下。

解決方案:記錄數組和結構化數組

有效的方法是利用記錄數組或結構化數組。

記錄陣列:

記錄陣列提供了一種在單一陣列中儲存多種資料類型的靈活方法。可以透過屬性存取各個欄位:

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')])
print(records['keys'])
# rec.array(['a', 'b', 'c', 'd', 'e'], 
#   dtype='|S1')
print(records['data'])
# array([0, 1, 2, 3, 4])
登入後複製

結構化陣列:

與記錄陣列類似,結構化陣列允許為每個欄位指定資料類型:

arr = np.array([('a', 0), ('b', 1)], 
                dtype=([('keys', '|S1'), ('data', 'i8')]))

print(arr)
# array([('a', 0), ('b', 1)], 
#   dtype=[('keys', '|S1'), ('data', '<i8')])
登入後複製

請注意,記錄數組提供屬性訪問,而結構化數組則不提供。

以上是如何連接不同資料類型的陣列並保持記憶體效率?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!