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

运行此代码时出现错误

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

python 代码

import random

def getsys():
    row = ''
    for i in range(0 , 8):
        randintt = str(random.randint(0 , 4))
        row += randintt
    return row


def getx():
    x = []
    for i in range(0,14):
        mysys = getsys()
        x.append(mysys)

    return x 

y = getx()
print (y)

import initialsys
import numpy as np

R = np.array([[0.90 , 0.93,0.91 , 0.95],
               [0.95 , 0.94, 0.93, 0],
               [0.85 , 0.90 , 0.87 , 0.92],
               [0.83 , 0.87 , 0.85 , 0 ],
               [0.94 , 0.93 , 0.95 , 0],
               [0.99 , 0.98 , 0.97 , 0.96],
               [0.91 , 0.92 , 0.94 , 0],
               [0.81 , 0.90 , 0.91 , 0],
               [0.97 , 0.99 , 0.96 , 0.91],
               [0.83 , 0.85 , 0.90 , 0],
               [0.94 , 0.95 , 0.96 , 0],
               [0.79 , 0.82 , 0.85 , 0.90],
               [0.98 , 0.99 , 0.97 , 0],
               [0.85 , 0.92 , 0.95 , 0.99]
              ])

def expression(r ,possition , char ):
    exp = 1-r[possition , char]


x = initialsys.getx()
possition = 1
Total = 1
char = ""
for row in x :
    for char in row :
        if char!= 0 :
            exp = expression(R , possition , char)
            Total = Total*exp
    Total = 1-Total
    possition = possition + 1

【问题讨论】:

  • 仅供参考,这不是重点,但您应该始终使用np.array() 而不是np.matrix()。矩阵已弃用。此外,即使工作正常,您也总是会得到 0; int() 在 0 和 1 之间的任何值都将被截断为 0。您希望如何使用 int(位置)和字符(charr)来索引矩阵?
  • 抱歉,已编辑代码但当前出现该错误

标签: python numpy data-science


【解决方案1】:

您的代码中存在许多问题,但要修复当前错误,您需要使用错误中所述的整数而不是字符来索引数组,您可以执行 int(char) 然后返回结果。

def expression(r, possition , char):
   return 1-r[possition, int(char)]

【讨论】:

    【解决方案2】:

    对于在使用 numpy 进行机器学习编码时遇到此错误的人。当您尝试打印预测 classes[d["Y_prediction_test"][0,index]] 时,您将收到相同的错误。请注意,d["Y_prediction_test"][0,index] 会返回一个 float,例如 1.0。所以你应该把它转换成int

    plt.show()
    val = d["Y_prediction_test"][0,index]
    val = int(val)
    print(classes[val])
    

    我一直在寻找这个答案。但是没能找到。花了一些时间来解决这个问题,我希望这会对你有所帮助。我正在自学 ML/AI。因此,如果我们在同一个团队中,让我们联系并帮助每个人。谢谢。

    【讨论】:

      猜你喜欢
      • 2016-04-29
      • 2019-09-26
      • 2017-12-08
      • 2019-03-13
      • 2017-11-24
      • 2021-08-29
      • 2019-12-12
      • 1970-01-01
      • 2018-03-11
      相关资源
      最近更新 更多