matlab到python编码

matlab到python编码,python,matlab,Python,Matlab,我在MATLAB中有这段代码,我正在尝试用Python转换它 yc(1:45)=-2; yc(46:90)=2; yc(91:136)=-2; yc(137:182)=2; 我不知道如何在python thnx中转换它,以帮助我直接等效 使用numpy的直接等价物为: >>> import numpy as np >>> yc = np.empty(182) >>> yc[:45] = -2 # Equivalent t

我在MATLAB中有这段代码,我正在尝试用Python转换它

 yc(1:45)=-2;
 yc(46:90)=2;
 yc(91:136)=-2;
 yc(137:182)=2;
我不知道如何在python thnx中转换它,以帮助我

直接等效 使用
numpy
的直接等价物为:

>>> import numpy as np
>>> yc = np.empty(182)
>>> yc[:45] = -2       # Equivalent to, yc[0:45] = -2
>>> yc[45:90] = 2
>>> yc[90:136] = -2
>>> yc[136:] = 2       # Equivalent to, yc[136:182] = 2
其中创建具有给定形状的随机值的数组。然后,我们通过在片中访问来分配不同的值

备用方式 您还可以尝试使用和:

yc=np.arange(182) >>>yc=np.选择(条件列表=[ yc<45,(45>>yc 数组([-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]) 这里,
np.arange
创建了一个值范围从0到181(总共182个值)的数组,我们创建了一个新数组,根据不同的条件替换数组中的不同值

要记住的事情:

  • MATLAB从1开始索引,而python从0开始
  • 您需要预先分配一个数组,以便通过切片进行分配
有用链接:

什么是
yc
,它需要什么参数?
>>> yc = np.arange(182)
>>> yc = np.select(condlist=[
                       yc < 45, (45 <= yc) & (yc < 90), 
                       (90 <= yc) & (yc < 136), yc >= 136
                   ],
                   choicelist=[-2, 2, -2, 2])

>>> yc
 
array([-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
       -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
       -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,  2,  2,  2,  2,  2,  2,
        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
        2,  2,  2,  2,  2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
       -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
       -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2])