python - np.array 文本内存大小
问题描述
我有一个(可能很长)字符串的列表。
当我将它转换为 np.array 时,我很快就会用完 RAM,因为它似乎比简单的列表占用更多的内存。为什么以及如何处理它?或者也许我只是做错了什么?
编码:
import random
import string
import numpy as np
from sys import getsizeof
cnt = 100
sentences = []
for i in range(0, cnt):
word_cnt = random.randrange(30, 100)
words = []
for j in range(0, word_cnt):
word_length = random.randrange(20)
letters = [random.choice(string.ascii_letters) for x in range(0, word_length)]
words.append(''.join(letters))
sentences.append(' '.join(words))
list_size = sum([getsizeof(x) for x in sentences]) + getsizeof(sentences)
print(list_size)
arr = np.array(sentences)
print(getsizeof(arr))
print(arr.nbytes)
输出:
76345
454496
454400
我不确定我getsizeof()
是否正确使用,但是当我注意到内存问题时我开始调查它,所以我很确定发生了什么事:)
(奖金问题)
我正在尝试运行类似于https://autokeras.com/examples/imdb/的东西。原始示例需要大约 3GB 的内存,我想使用更大的数据集。也许有更好的方法?
我在 Ubuntu 18.04 上使用带有 numpy==1.17.0 的 python3.6.9。
解决方案
推荐阅读
- regex - 如何使用验证器验证 asp 页面以验证文本框以允许 2 种不同长度的输入?
- java - JFrame颜色变化
- ruby-on-rails - 从 Mounted Gems 运行 Rspecs
- angular - Angular - TypeError:无法读取未定义的属性“jobTitle”
- javascript - 使用 javascript 检测可变字体支持
- python - 为什么在 JsonResponse 中使用非字典对象不好?
- go - 与 goroutine 混淆
- git - 多个开发人员如何在同一个功能(分支)上工作?
- javascript - 在 Ext Js 网格过滤器中未选中过滤器菜单的复选框时触发事件?
- python - Django模板渲染更改了无效编辑配置文件表单上的用户名