繁体   English   中英

matlab转python编码

[英]matlab to python coding

我在 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

其中np.empty创建一个具有给定形状的随机值的数组。 然后我们继续通过访问切片来分配不同的值。

替代方式

您也可以尝试使用np.arangenp.select

>>> 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])

这里np.arange创建了一个值范围从 0 到 181(总共 182 个值)的数组,我们创建一个新数组,根据不同的条件替换数组中的不同值。

要记住的事情:

  • MATLAB 从 1 开始索引,而 python 从 0 开始。
  • 您需要预先分配一个数组才能通过切片进行分配。

有用的网址:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM