Python 用循环定义矩阵元素

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[

我想在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[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.]])