簡體   English   中英

轉換為numpy數組需要多少內存和處理

[英]How much memory and processing does it take to convert to numpy array

我正在處理需要將整數加載到長度約為1800萬的數組中的文件。

要做類似的事情需要多少內存和處理時間

my_list = [123,231,90,20,...,92] #length is 18 million
new_list = np.array(my_list, type='int')

這是計算機僅創建第二個長度為1800萬並重復的陣列還是numpy做一些更復雜的事情。

在這種情況下,“處理時間”並不重要,因為這主要是指針查找問題。 由於您標記了帖子big-O,因此它將是O(n) 將Python list轉換為Numpy數組時,它將保留內存以在數組中存儲len(my_list)整數-您可以通過查看Numpy上默認的int類型並使用來確切地了解這是多少內存.itemsize所述的屬性dtype對象:

>>> np.dtype('int')
dtype('int64')
>>> np.dtype('int').itemsize
8

因此,此數組將需要8 * len(my_list)個字節存儲在原始my_list已使用的內存上。

然后,它將需要遍歷列表中的每個項目,查找它是什么類型的Python對象(請記住,Python list可能是異構的,無法先驗地知道列表中的每個項目都可以轉換為整數)。 然后,Numpy會盡最大努力將Python對象轉換為機器整數並將其存儲在列表中。

如果可能的話,最好不要將它們存儲在Python list中,這取決於這1800萬個整數來自何處。 但是要說更多有關該問題的信息,將需要更多細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM