import numpy as np
y=np.zeros(shape=(1,5))
for n in np.linspace(1,5,5):
y[n-1]=n**2
print(y)
有什么问题,显示IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
出现这个问题是因为索引出现了浮点数,不是索引允许的数据类型,可以验证一下
import numpy as nparr里存储的就是源代码中会用的索引,下图是结果
是浮点型的,所以我们只需要更改一下:
import numpy as np此时这个代码中还有问题,索引会超出范围,这是因为python的索引是从0开始的,数组的第一维是需要的。
正确的代码如下:
import numpy as np你的Python程序y=np.zeros(shape=(1,5))有问题,定义一个有5个元素的数组并填充0,应该这样写y=np.zeros(shape=5)
还有np.zeros()函数建立的数组缺省是float型的数组,所以要指定数据类型为int型,所以y=np.zeros(shape=(1,5))应该改成y=np.zeros(shape=5,dtype=int)
而且np.linspace()函数建立的数列缺省也是float型的数列,所以需要指定数据类型为int型,所以for n in np.linspace(1,5,5):需要改成for n in np.linspace(1,5,5,dtype=int):,这样n的类型就是int型了,语句y[n-1]=n**2就不会报要求int型的n的错误了.
完整的Python程序如下(改动的地方见注释)
import numpy as np