首页 > 解决方案 > python - IndexError:索引 9 超出轴 0 的范围,大小为 1

问题描述

我正在尝试运行以下代码。不幸的是,我收到一个我自己还无法解决的错误。

import numpy as np
import random

def reallyrandom(arg1, arg2, arg3):
    
    int1=int(arg1)
    int2=int(arg2)
    int3=int(arg3)

    np.random.seed(42)

    x=np.random.randint(0,10, size=int1)
    print(x)
    print(x.shape)
    y=x*int2
    print(y)
    print(y.shape)
    z=y[int3]
    print(z)
    

    print(f"Your random value is {z}")

reallyrandom(1,2,9)

错误:

IndexError                                Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_15232/4039400629.py in <module>
     23 
     24 #reallyrandom(59,2,7)
---> 25 reallyrandom(1,2,9)

~\AppData\Local\Temp/ipykernel_15232/4039400629.py in reallyrandom(arg1, arg2, arg3)
     16     print(y)
     17     print(y.shape)
---> 18     z=y[int3]
     19     #print(z)
     20 

IndexError: index 9 is out of bounds for axis 0 with size 1

问题似乎从定义值 z 开始,line z=y[int3] 我不知道如何解决它。有人可以解释我做错了什么吗?我在互联网上发现这是一个索引错误?

先感谢您!

标签: pythonlucenesyntax-error

解决方案


该行z = y[int3]试图从数组中获取第 9 个值y(因为索引int3为 9),但数组中只有一个值。这一行:

x = np.random.randint(0, 10, size=int1)

正在创建一个只有一个随机值的数组(因为 的值为int11)。例如,如果要创建一个包含 10 个随机数的数组,请使用:

x = np.random.randint(0, 10, size=10)

或者,您可以使用其他变量 for size,但它需要大于您传入的索引,z = y[int3]否则您将得到相同的IndexError.


推荐阅读