数值迭代 Python
Numerical Iteration Python
对于以下代码:
from array import *
x=[]
x.append(0.232)
print (x)
for i in range(25):
x[i+1]=(1/(i+1))-5*x[i]
我有这个错误:
x[i+1]=(1/(i+1))-5*x[i]
IndexError: list assignment index out of range
这可能是因为我将 x 定义为一个空数组。但是如何定义数组并执行相同的操作呢?
list
不是为高效的数学运算而设计的,因此最好使用 numpy
数组来进行数学运算。但是,如果你想使用列表,你可以使用
定义一个用 n
零初始化的列表
x=[0]*n
x[0] = 0.232
x[1] = ....
....
请记住,使用上述方法创建的多维 list
将引用数组中的相同元素!例如:
l = [0,0,0]*5
将在另一个 list
中创建五个相同的 list
,而不是分开的 list
。所以像这样创建多维数组是个坏主意!
更好的方法是使用以下代码使用 numpy 创建数组:
from numpy import empty, zeros
x = empty(n) # or # x = zeros(n)
x[0] = 0.232
x[1] = ....
....
和
l = empty((3,5)) # or # l = zeros((3,5))
对于 3 行 5 列的数组。
对于以下代码:
from array import *
x=[]
x.append(0.232)
print (x)
for i in range(25):
x[i+1]=(1/(i+1))-5*x[i]
我有这个错误:
x[i+1]=(1/(i+1))-5*x[i]
IndexError: list assignment index out of range
这可能是因为我将 x 定义为一个空数组。但是如何定义数组并执行相同的操作呢?
list
不是为高效的数学运算而设计的,因此最好使用 numpy
数组来进行数学运算。但是,如果你想使用列表,你可以使用
n
零初始化的列表
x=[0]*n
x[0] = 0.232
x[1] = ....
....
请记住,使用上述方法创建的多维 list
将引用数组中的相同元素!例如:
l = [0,0,0]*5
将在另一个 list
中创建五个相同的 list
,而不是分开的 list
。所以像这样创建多维数组是个坏主意!
更好的方法是使用以下代码使用 numpy 创建数组:
from numpy import empty, zeros
x = empty(n) # or # x = zeros(n)
x[0] = 0.232
x[1] = ....
....
和
l = empty((3,5)) # or # l = zeros((3,5))
对于 3 行 5 列的数组。