Python 如何填充n维数组

Python 如何填充n维数组,python,nlp,Python,Nlp,我有一个单词嵌入矩阵,它是这样的- ([["word1","word2"...],["word6","word5"....],[...],[....]......]) 这里的数组是句子,单词是嵌入的, 嵌入件具有形状(100,) 并非所有的句子都有相同的长度,我希望所有的句子都有相同的长度,我想填充和修剪我该怎么做?以下是我的尝试。我从一个简单的例子开始,其中有三个句子,一个有5个单词,一个有3个单词,一个有4个单词。平均值是4,所以最后一句没有变化,第一句被截断,第二句用0填充 samp

我有一个单词嵌入矩阵,它是这样的-


([["word1","word2"...],["word6","word5"....],[...],[....]......])

这里的数组是句子,单词是嵌入的, 嵌入件具有形状(100,)


并非所有的句子都有相同的长度,我希望所有的句子都有相同的长度,我想填充和修剪我该怎么做?

以下是我的尝试。我从一个简单的例子开始,其中有三个句子,一个有5个单词,一个有3个单词,一个有4个单词。平均值是4,所以最后一句没有变化,第一句被截断,第二句用0填充

sample_sentences = [[1,2,3,4,5],[1,2,3],[1,2,3,4]]

mean = 0
for element in sample_sentences:
    mean += len(element)

mean = mean/len(sample_sentences)

for element in sample_sentences:
    difference =0

    if (len(element)<mean):
        difference = int(mean)-len(element)
        for i in range (difference):
            element.append(0)


    if(len(element)>mean):
        del element[int(mean):]

print(sample_sentences)
sample_语句=[[1,2,3,4,5],[1,2,3],[1,2,3,4]]
平均值=0
对于示例句子中的元素:
平均值+=len(元素)
平均值=平均值/长度(例句)
对于示例句子中的元素:
差=0
如果(长度(元素)平均值):
del元素[int(平均值):]
打印(例句)
输出:

如果需要长度为差的零向量:

sample_sentences = [[1,2,3,4,5],[1,2,3],[1,2,3,4]]

mean = 0
for element in sample_sentences:
    mean += len(element)

mean = mean/len(sample_sentences)

for element in sample_sentences:
    difference =0

    if (len(element)<mean):
        difference = int(mean)-len(element)
        element.append([0 for x in range(difference)])


    if(len(element)>mean):
        del element[int(mean):]

print(sample_sentences)
sample_语句=[[1,2,3,4,5],[1,2,3],[1,2,3,4]]
平均值=0
对于示例句子中的元素:
平均值+=len(元素)
平均值=平均值/长度(例句)
对于示例句子中的元素:
差=0
如果(长度(元素)平均值):
del元素[int(平均值):]
打印(例句)
输出:
我想你已经完成了词干分析

对于下一步,您需要考虑如何生成包括文本之间的相似性的数据。通常使用弓和TD-IDF


请参阅本文:

考虑以下简单功能:它使用
填充元素将列表扩展到更大的
gl

def expand(x, gl, filler):
    n = gl - len(x)
    if n > 0:
        x.extend([filler]*n)
您可以使用这个简单的函数。如果希望所有句子的长度相同,则应找到最长的句子,并填充其他句子以匹配该长度:

matrix = [["word1", "word2", "myword3"],["word6", "word5"], ["a", "b", "c", "d"]]
maxlength = max(map(len, matrix)) #get the length of the longest sentence

for sentence in matrix:
    expand(sentence, maxlength, "0") #appending 0 to shorter sentences

print(matrix)

这将打印:
[['word1','word2','myword3','0'],['word6','word5','0','0'],['a','b','c','d']

您希望如何准确调整句子的长度?明度不是有不同的长度吗,所以我取了平均长度,我想用零填充句子,这样每个句子都有相同的长度,并且句子的长度比平均长度长?是的,有些更长,我想用形状(100,)填充矩阵会行得通,但我不知道还有什么办法:按长度,你是指单词的数量还是字母的数量?在我的例子中,数字1,2…5是向量,我想我是在加0,而不是大向量。如果代码是一个整数,而不是一系列字符串,我相信它仍然可以工作。让我换一个示例句子来演示,这就是你要问的吗?它是float实际上它来自Word2Vec它应该可以工作,无论组成矩阵的元素的类型如何,除非使用for访问矩阵时出现问题..in..,当你尝试应用该方法时是否出现问题?如果有,我可以得到一个输出来玩吗?当填充而不是添加一个向量时,只添加了零,我想填充一个由零组成的向量。很抱歉,这是我第一次处理大向量,因为不清楚。我有一些东西,比如列表(句子)中有单词向量