为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复 numpy 数组中的“IndexError: only integers”?

如何修复 numpy 数组中的“IndexError: only integers”?

慕容708150 2021-06-09 13:49:49
我正在自学 Python,为学校项目做准备。我遇到了以下错误,我不知道如何解决:IndexError:只有整数、切片 ( :)、省略号 ( ...)、numpy.newaxis ( None) 和整数或布尔数组是有效索引这是我尝试运行的代码(根据评论对其进行了一些编辑)from sympy import *from sympy.abc import ifrom mpmath import *import numpy as npnp.set_printoptions(suppress=True)N = 3M = np.zeros(shape=(N, N))for n in range(0, N):    M[0, n] = fac(n)    # mpmath.facfor m in range(1, N):    for n in range(0, N):        M[m, n] = (Sum(M[m - 1, i], (i, 0, n + 1))) / (n+1) print(M)本质上,我想为数组指定一个维度,并为数组指定第一行。然后我想以某种方式构造数组中的剩余条目(如果您了解该求和技术,则为 Holder summability)。我已经查看了堆栈溢出中的各种其他问题,但这些问题超出了我目前的知识范围,或者没有完全解决我的问题。我已经摆弄了许多参数并将问题隔离到第 13 行。特别是,一旦我将“i”放入 M[m-1,i] 中,我就会收到错误消息。如果我输入任何小于维度的数字而不是“i”,我的代码就会运行,但这不是我需要的结构。例如,条目M[2,1]应构造为:M[2,1] = (M[1,0] + M[1,1]) / 2我认为这与我写的总和相对应。我的索引是如何变成非正整数的?
查看完整描述

2 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

您正在混合numpy和sympy,并且会出现问题:


您的sympy导入定义i为一个符号(这对numpy用户来说并不明显):


In [1]: from sympy.abc import *

In [2]: i

Out[2]: i

然后你定义一个numpy数组。(import numpy as np优于*):


In [3]: M=np.zeros((3,3))

尝试将其i用作索引会引发您的错误:


In [4]: M[1,i]

------------------------------------------------------------------

IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

符号可以在sympy矩阵中工作,但在索引 numpy 数组时不起作用。


Ms = sy.zeros(3,3)      # sympy matrix  

for m in range(1,3):

    for n in range(3):

        Ms[m,n] = (sy.Sum(Ms[m-1,i],(i,0,n+1)))/(n+1)

这运行,虽然结果Ms没有多大意义。


所以问题的根源是你混合了 numpy 和 sympy,可能是因为无知,也可能是因为*进口。


查看完整回答
反对 回复 2021-06-16
  • 2 回答
  • 0 关注
  • 729 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号