numpy数组-IndexError:数组索引过多

时间:2019-10-28 16:13:51

标签: python arrays numpy

我已经审查了该特定主题的主题,但是没有一种解决方案适用于我的情况,请为此提供帮助。我正在尝试准备使用神经语言模型进行训练的数据。我的数据已经过预处理并存储在文本文件中。示例数据如下:[“ restaurant”,“ paris”,“ district”,“ gunman”,“ hold”,“人质” ...],并且根据数组shape属性,数组形状为(10848135,) 。但是,当我尝试使用语句X, y = sequences[:,:-1], sequences[:,-1]

切片数据时,出现了一条索引错误消息。

代码如下:

def encode_words(self, dataset):
        data = dataset.split('\n')
        tokenizer = Tokenizer()
        tokenizer.fit_on_texts(dataset)
        sequences = tokenizer.texts_to_sequences(dataset)
        vocab_size = len(tokenizer.word_index) + 1
        sequences = array(sequences)
        X, y = sequences[:,:-1], sequences[:,-1]
        y = to_categorical(y, num_classes=vocab_size)
        seq_length = X.shape[1]
        return X, y, vocab_size, seq_length, tokenizer

我知道错误是什么,但不知道如何解决。请帮助我,以使代码正常工作。以下是完整的错误消息:

回溯(最近通话最近一次):

   File "/home/asifa/anaconda3/deep_learning_project/processor.py", line 15, in <module>
    X,y,vocab_size,seq_length,tokenizer = emb.encode_words(seq_data)

  File "/home/asifa/anaconda3/deep_learning_project/WordEmbedding.py", line 67, in encode_words
    X, y = sequences[:,:-1], sequences[:,-1]

IndexError: too many indices for array

2 个答案:

答案 0 :(得分:0)

您具有一维数组,并尝试在二维中切片。这就是为什么您会收到此错误。

您的数组形状为(10848135,),这意味着您只有1个维度。如果期望从需要提取y数组的地方获取第二维,则需要检查文件,因为它具有1d数组。因此,您不能像这样访问。

答案 1 :(得分:0)

您拥有的数组是1D,并且您正在尝试以2D形式访问它。 如果您期望2D,请检查为什么首先是1D。