我正在尝试运行下面的代码。不幸的是,我遇到了一个我自己还不能解决的错误。
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
问题似乎是从定义line z=y[int3]
中的z值开始的,我不知道如何解决它。有人能解释一下我做错了什么吗?我在网上发现这是一个索引错误?
先谢谢你!
1条答案
按热度按时间z8dt9xmd1#
行
z = y[int3]
试图从数组y
中获取第9个值(因为索引int3
为9),但数组中只有一个值。正在创建一个只包含一个随机值的数组(因为
int1
的值为1)。例如,如果要创建一个包含10个随机数的数组,请使用:或者,您可以使用其他变量来表示
size
,但它需要大于您在z = y[int3]
中传递的索引,否则您将得到相同的IndexError
。