【问题标题】:IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices"IndexError:只有整数、切片 (`:`)、省略号 (`...`)、numpy.newaxis (`None`) 和整数或布尔数组是有效的索引"
【发布时间】:2019-03-13 22:45:40
【问题描述】:

我正在尝试运行 W2V 算法。我发现索引错误,不知道哪里出错了。这是错误:

IndexError:只有整数、切片 (:)、省略号 (...)、numpy.newaxis (None) 和整数或布尔数组是有效的索引

这是代码:

    def makeFeatureVec(words, model, num_features):
# Function to average all of the word vectors in a given
# paragraph
#
# Pre-initialize an empty numpy array (for speed)
featureVec = np.zeros((num_features,),dtype="float32")
#
nwords = 0.
# 
# Index2word is a list that contains the names of the words in 
# the model's vocabulary. Convert it to a set, for speed 
index2word_set = set(model.wv.index2word)
#
# Loop over each word in the review and, if it is in the model's
# vocaublary, add its feature vector to the total
for word in words:
    if word in index2word_set: 
        nwords = nwords + 1.
        featureVec = np.add(featureVec,model[word])
# 
# Divide the result by the number of words to get the average
featureVec = np.true_divide(featureVec,nwords)
return featureVec

    def getAvgFeatureVecs(reviews,model,num_features):
# Given a set of reviews (each one a list of words), calculate 
# the average feature vector for each one and return a 2D numpy array 
# 
# Initialize a counter
counter = 0.
# 
# Preallocate a 2D numpy array, for speed
reviewFeatureVecs = np.zeros((len(reviews),num_features),dtype="float32")
# 
# Loop through the reviews
for review in reviews:
   #
   # Print a status message every 1000th review
    if counter%1000. == 0.:
        print ("Review %d of %d" % (counter, len(reviews)))
   # 
   # Call the function (defined above) that makes average feature vectors
    reviewFeatureVecs[counter] = makeFeatureVec(review, model,num_features)
   #
   # Increment the counter
    counter = counter + 1.
return reviewFeatureVecs

这段代码来自 Bag-of-Words-Meets-Bags-of-Popcorn-Kaggle。我不确定错误在哪里。我的事情np.divide 正在引发错误。我在窗户上工作

【问题讨论】:

  • 你确定这就是你看到的全部内容吗?没有提到发生错误的行号吗?另外,据我所知,您错误地定义了函数:缩进应该在函数的每一行之前,def ...: 行除外,反之亦然。

标签: python-3.x nlp kaggle


【解决方案1】:

切片变量必须是整数。 (将浮点值替换为整数,例如:0. 到 0)

1)    nwords = 0.

2)   # Print a status message every 1000th review
        if counter%1000. == 0.: 
            print ("Review %d of %d" % (counter, len(reviews)))

3)   # Increment the counter
         counter = counter + 1.
      return reviewFeatureVecs

【讨论】:

    【解决方案2】:

    counter = counter + 1.

    应该是

    counter = counter + 1(注意点)或counter += 1

    点使counter 成为浮点数(因为1. 等效于1.0)并且浮点数不能用作索引。

    【讨论】:

    • 这行得通。这个点出现在更多的地方。谢谢
    猜你喜欢
    • 2017-12-08
    • 2017-11-24
    • 2019-12-12
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多