用循环定义矩阵元素

时间:2018-08-12 19:58:45

标签: 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[j]=600
else:
            v[j]=0

我希望v [5]和v [6]等于600,其他则为零,但我面临着:

[[  0.]
 [  0.]
 [  0.]
 [  0.]
 [  0.]
 [  0.]
 [  0.]
 [  0.]
 [  0.]
 [600.]]

您能帮我吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

我假设您的意思是将0.40.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.]])

注意:如果您正在运行Py2.7,则还需要:

d=(b-a)/float(n+1)

您可以使用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.]])