Python小问题
importnumpyasnpy=np.zeros(shape=(1,5))forninnp.linspace(1,5,5):y[n-1]=n**2print(y)有什么...
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 展开
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 展开
5个回答
展开全部
出现这个问题是因为索引出现了浮点数,不是索引允许的数据类型,可以验证一下
import numpy as np
y=np.zeros(shape=(1,5))
arr = [n for n in np.linspace(1,5,5)]
arr里存储的就是源代码中会用的索引,下图是结果
是浮点型的,所以我们只需要更改一下:
import numpy as np
y=np.zeros(shape=(1,5))
for n in np.int16(np.linspace(1,5,5)):
y[n-1]=n**2
print(y)
此时这个代码中还有问题,索引会超出范围,这是因为python的索引是从0开始的,数组的第一维是需要的。
正确的代码如下:
import numpy as np
y=np.zeros(shape=(1,5))
for n in np.int16(np.linspace(1,5,5)):
y[0,n-1]=n**2
print(y)
展开全部
你的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
y=np.zeros(shape=5,dtype=int) #这里把y=np.zeros(shape=(1,5))改成y=np.zeros(shape=5,dtype=int)
for n in np.linspace(1,5,5,dtype=int):#这里把for n in np.linspace(1,5,5):改成for n in np.linspace(1,5,5,dtype=int):
y[n-1]=n**2
print(y)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
np.linspace(1,5,5)生成的数组中的元素全是小数的
所以n-1不能作为y的下标使用,最起码应该加上int将n取个整
再说说另一个,你是要在遍历过程中修改一个数组中的元素,使用的赋值方式不对:
y = np.zeros(shape=(1, 5))
for n in np.linspace(1, 5, 5):
y[0][int(n) - 1] = n ** 2
print(y)
最开始你创建的是一个只有一行的数组,所以数组中的元素表达是为y[0][X]
所以n-1不能作为y的下标使用,最起码应该加上int将n取个整
再说说另一个,你是要在遍历过程中修改一个数组中的元素,使用的赋值方式不对:
y = np.zeros(shape=(1, 5))
for n in np.linspace(1, 5, 5):
y[0][int(n) - 1] = n ** 2
print(y)
最开始你创建的是一个只有一行的数组,所以数组中的元素表达是为y[0][X]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-11-04 · 百度知道官方认证企业
腾讯电脑管家
腾讯电脑管家是腾讯公司推出的免费安全管理软件,能有效预防和解决计算机上常见的安全风险,并帮助用户解决各种电脑“疑难杂症”、优化系统和网络环境,是中国综合能力最强、最稳定的安全软件。
向TA提问
关注
展开全部
typedef struct lista{
struct lista *next;
int data;
}list;
void insert(list *h);
void del(list *h);
int main()
{
int flag;
list *head=(list *)malloc(sizeof(list));
head->next=NULL;
while(1)
{
struct lista *next;
int data;
}list;
void insert(list *h);
void del(list *h);
int main()
{
int flag;
list *head=(list *)malloc(sizeof(list));
head->next=NULL;
while(1)
{
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我的问题是什么问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询