我想在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.]]
您能帮我吗?非常感谢。
答案 0 :(得分:1)
我假设您的意思是将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.]])
注意:如果您正在运行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.]])