我通过移植一些我用matlab/octave编写的代码来尝试numpy。在matlab中,我可以定义一个python切片的等价物,然后根据需要增加它。例如,在我的matlab代码中
HXx_range = 1:NHXx;
HXy_range = 1:NHXy;
blah blah blah
Hx(HXx_range, HXy_range) = Da(Hx_media(HXx_range, HXy_range)).*Hx(HXx_range, HXy_range) + Db(Hx_media(HXx_range, HXy_range)).*(Ez(HXx_range,HXy_range) - Ez(HXx_range,**HXy_range+1**));
Hy(HYx_range, HYy_range) = Da(Hy_media(HYx_range, HYy_range)).*Hy(HYx_range, HYy_range) + Db(Hy_media(HYx_range, HYy_range)).*(Ez(**HYx_range+1**,HYy_range) - Ez(HYx_range,HYy_range));
Ez(EZx_range, EZy_range) = Ca(Ez_media(EZx_range, EZy_range)).*Ez(EZx_range, EZy_range) + Cb(Ez_media(EZx_range, EZy_range)).*(Hy(EZx_range,EZy_range) - Hy(**EZx_range-1**,EZy_range) + Hx(EZx_range,**EZy_range-1**) - Hx(EZx_range,EZy_range));
“**”中的术语(如“HXy_range+1”)是关键部分;HXy_range+1等于2:(NHXy+1)。在python中,我可以用类似的方式定义切片:
^{pr2}$但是,HXx_range+1给了我一个错误。当然,我可以做一个新的切片,但是没有那么干净。有办法吗?在
谢谢。在
如果将
HXy_range
定义为numpy数组,那么可以根据需要增加它。如果您希望将其用作切片,可以形成slice(*HXy_range)
:不,Python} either 。在
slice
实例是immutable。要使用标准的slice
实例,必须每次创建一个新实例。不幸的是,you can't subclass ^{相关问题 更多 >
编程相关推荐