Python Numpy - 矩阵内存错误和限制

时间:2015-11-09 16:46:21

标签: python numpy matrix

在我在网上搜索这个主题之后,我发现我并不是唯一一个遇到这个问题的人,但我无法理解是否有办法克服这个问题。

我有5036个文本文件和15985个单词的单词列表。对于文本文件中找到的单词列表的每个单词,我想在我的矩阵上放一个1。但我收到错误: MemoryError

我还试图创建矩阵并进行打印(如果我的python代码中有错误)..我得到了同样的错误。 有什么建议吗?

Query query = new Query(new Criteria().andOperator(
    Criteria.where("_id").is("f9091ed9-c828-4b52-b1c3-44e42f719694"),
    Criteria.where("participants._id").is("6b49b373-1e61-4c98-a703-c1c2bc4da0e2"));

Update update = new Update();
update.set("participants.$.firstName", "foo");
update.set("participants.$.lastName", "bar");
mongoTemplate.updateFirst(query, update, Conference.class);

编辑:我的代码可能有一些错误.. 它应该以这种方式工作:

  1. 从文件创建字典(文本文件中的每个单词都是 名称为" 1_word1 2_word2"等,所以拆分文本的每一行 文件我将在split_ [0]矩阵中的位置,在split_ [1] 这个词本身)
  2. 对于每个文本文件,它保存文件的编号以便放置 矩阵上的正确文档(每个文本文件都被命名 “1_1A_out.txt 2_1A_out.txt等”)
  3. 最后打印矩阵。

    matrix = np.zeros(shape=(5036,15985))
    

2 个答案:

答案 0 :(得分:1)

您收到内存错误可能是因为您的矩阵太大,或者您的计算机中没有足够的可用RAM内存。

您可以尝试迭代所有文本文件,因此您只需创建一个矩阵,如:

matrix = np.zeros(shape=(15985))

然后将结果保存到每个文本的文件中。

答案 1 :(得分:1)

根据具体的错误消息:

  

文件   " C:/Users/KP/Desktop/FSC_Treetag/out/f3_test_from_files_to_matrix_fonctions.py" ;,   第6行,矩阵= np.zeros(shape =(5037,15999))MemoryError

您没有足够的内存来分配阵列。根据您的系统,matrix中的每个值都将使用8字节之类的内容,因此这个数组只能出现大约600 MB的内存...实际上并不多。可能还有其他东西(进程,打开文件等)占用了你所有的系统内存。

同时,由于您只是查找文件中是否存在每个单词,因此矩阵中的每个文件单词条目只需要一个位。在这种情况下,您应该只需use a bitarray(即每个条目的一个位)。