[英]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.