如何从for循环创建np数组

2024-09-24 02:22:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码,它使用文本blob索引单词。我的当前输出来自每个“doc”的for循环(如doc1、doc2、doc3等)

从每个文件,我想有一个向量的4个最重要的字,我希望返回到一个4,1索引号np.数组. 不幸的是,我似乎无法解决这个问题。你知道吗

bloblist = [doc1, doc2, doc3, doc4, doc5, doc6, doc7, doc8, doc9, doc10, doc11]
for i, blob in enumerate(bloblist):
    print("Top words in doc {}".format(i + 1))
    scores = {word: tfidf(word, blob, bloblist) for word in blob.words}
    sorted_words = sorted(scores.items(), key=lambda x: x[1], reverse=True)
    corpus = blob.words
    wordIndex = list(enumerate(corpus))
    for word, score in sorted_words[:4]:
        arr = (corpus.index(word))
        print(arr)

这将产生以下结果:

Top words in doc 1
5
0
1
2
Top words in doc 2
19
12
41
4

这很酷,但我想要这样的

Top words in doc 1
[5,0,1,2]

有人能帮我吗?你知道吗


Tags: infordoctopdoc1corpusblobword
1条回答
网友
1楼 · 发布于 2024-09-24 02:22:41

多亏了奥利,我找到了适合我的解决方案。你知道吗

bloblist = [doc1, doc2, doc3, doc4, doc5, doc6, doc7, doc8, doc9, doc10, doc11]
for i, blob in enumerate(bloblist):
    print("Top words in doc {}".format(i + 1))
    scores = {word: tfidf(word, blob, bloblist) for word in blob.words}
    sorted_words = sorted(scores.items(), key=lambda x: x[1], reverse=True)
    corpus = blob.words
    wordIndex = list(enumerate(corpus))
    arr = np.array([])
    for word, score in sorted_words[:4]:
        arrw = np.array([corpus.index(word)])
        arr = np.concatenate((arr, arrw))
    print(arr)
    arr = arr.reshape(4,1)
    print(arr.shape)

提供以下所需输出:

Top words in doc 1
[ 5.  0.  1.  2.]
(4, 1)
Top words in doc 2
[ 19.  12.  41.   4.]
(4, 1)
Top words in doc 3
[ 16.   2.   6.   7.]
(4, 1)

相关问题 更多 >