python - 如何修复 numpy 数组中的“IndexError:仅整数”?
问题描述
(已解决。请参阅下面的答案)我正在自学 Python 以准备学校项目。我遇到了以下错误,我无法弄清楚如何解决:
IndexError:只有整数、切片 ( :
)、省略号 ( ...
)、numpy.newaxis ( None
) 和整数或布尔数组是有效的索引
这是我要运行的代码(根据评论对其进行了一些编辑)
from sympy import *
from sympy.abc import i
from mpmath import *
import numpy as np
np.set_printoptions(suppress=True)
N = 3
M = np.zeros(shape=(N, N))
for n in range(0, N):
M[0, n] = fac(n) # mpmath.fac
for 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)
本质上,我想指定数组的维度和数组的第一行。然后我想以某种方式构造数组中的剩余条目(如果您了解该求和技术,则持有者求和性)。
我已经查看了堆栈溢出中出现此特定错误的各种其他问题,但这些问题超出了我目前的知识范围,或者没有完全解决我的问题。我已经修改了许多参数并将问题隔离到第 13 行。特别是,一旦我将“i”放入 M[m-1,i] 中,我就会收到错误。如果我输入任何小于尺寸的数字而不是“i”,我的代码就会运行,但这不是我需要的结构。
例如,条目M[2,1]
应构造为:
M[2,1] = (M[1,0] + M[1,1]) / 2
我认为这与我写的总和相对应。我的索引是如何变成非正整数的?
谢谢!
解决方案
您正在混合numpy
and 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,可能是因为无知,也可能是因为*
进口。
推荐阅读
- html - 图片卡/w Avatar 的 CSS 边框问题,当 600 像素或更大时,我无法将卡片与表单对齐
- javascript - 如何将 cookie 从一个页面写入另一个页面
- html - How do I modify my host file so I can access my web page through a host name?
- java - short -> int -> long 类型提升:是否有任何开销?
- artifactory - Artifactory PostgreSQL 数据库中没有行
- html - 如何使用模型将数据添加到表中 - HTML
- angular - 从 nb-select 中获取选定的文本
- python - 用于真实数据的 python mathplotlib
- python - 发生异常:配置不当
- python - 在更改下拉列表中的选项时从 URL 未更改的站点中抓取数据