Python 用循环定义矩阵元素
我想在Python中定义一个单列零矩阵,然后使用“for”和“if”循环将一些值关联到它的元素。我的代码如下:Python 用循环定义矩阵元素,python,Python,我想在Python中定义一个单列零矩阵,然后使用“for”和“if”循环将一些值关联到它的元素。我的代码如下: import numpy as np n=10 a=0 b=1 d=(b-a)/(n+1) x=np.zeros((n, 1)) v=np.zeros((n, 1)) for j in range(1,n): x[j]=j*d if (x[j]>=0.4): v[j]=600 elif (x[j]<=0.6): v[
import numpy as np
n=10
a=0
b=1
d=(b-a)/(n+1)
x=np.zeros((n, 1))
v=np.zeros((n, 1))
for j in range(1,n):
x[j]=j*d
if (x[j]>=0.4):
v[j]=600
elif (x[j]<=0.6):
v[j]=600
else:
v[j]=0
你能帮帮我吗。非常感谢。我假设您的意思是在
0.4
和0.6
之间,将值设置为600
,然后您需要将if
条件缩进for
的中,并将测试作为单个测试,例如:
In []:
for j in range(1, n):
x[j] = j*d
if 0.4 <= x[j] <= 0.6:
v[j] = 600
else:
v[j] = 0
v
Out[]:
array([[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[600.],
[600.],
[ 0.],
[ 0.],
[ 0.]])
您可以使用numpy以本机方式执行此操作:
In []:
x = np.arange(n) * d
v = np.zeros((n, 1))
v[(x >= 0.4) & (x <= 0.6)] = 600
v
Out[]:
array([[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[600.],
[600.],
[ 0.],
[ 0.],
[ 0.]])
[]中的:
x=np.arange(n)*d
v=np.零((n,1))
v[(x>=0.4)和(x您的缩进是否正确?您是否打算将if
/elif
/else
放在for
循环中?目前,您只在跳出循环后进行检查。缩进在python中很重要。您使用哪个版本的python来运行此程序?如果您使用的是Py2.7,则d=(b-a)/(n+1)
将等于0
,除非您有from\uuuuuu future\uuuu导入除法
,因为它们都是int
s,Py2.7将使用整数除法。使用浮点(n+1)
所以你有一个浮点
并使用浮点除法。@roganjosh除了缩进问题外,在运行Py2.7时,上面的代码也会有整数除法的问题。条件也可能有问题-我假设OP的意思是,如果0.4,你有理由在第一名?为什么不仅仅是x=np.arange(n)*d
,然后是v[(x>=0.4)&(x)
d=(b-a)/float(n+1)
In []:
x = np.arange(n) * d
v = np.zeros((n, 1))
v[(x >= 0.4) & (x <= 0.6)] = 600
v
Out[]:
array([[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[600.],
[600.],
[ 0.],
[ 0.],
[ 0.]])