SMOP转换不良

时间:2016-07-18 18:07:19

标签: python matlab

我使用smop python脚本在python中转换matlab代码。

在我的测试matlab代码中,我得到了这个:

a=10^6*[355,355,373,373,373,373,373]'

它会让我生成

a = 10 ** 6 * [355,355,373,373,373,373,373].T

首先是.T

的问题

我需要转换为

a = [355,355,373,373,373,373,373]
a=numpy.asarray(a).T.tolist()

然后是另一个,比另一个严重,

10 ** 6 * [355,355,373,373,373,373,373]

不会将数组的每个元素与10 ^ 6相乘,但会复制数组中每个元素的10 ^ 6倍。

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

问题是在Python中,运算符*是多态的。如果操作数是数字,则返回两个数的乘积,但如果一个操作数是整数(比如n)而另一个是序列(即字符串,列表或元组),则它连接序列{{1 }次并返回结果序列。值得注意的是,如果一个操作数是数字而另一个是Numpy数组,n执行逐元素乘法:

*

尝试重写您的代码:

>>> 5*2
10
>>> 'ha'*3
hahaha
>>> [1]*4
[1, 1, 1, 1]
>>> ('a', .5)*3
('a', 0.5, 'a', 0.5, 'a', 0.5)
>>> .1*numpy.array([10, 20, 30])
array([ 1.,  2.,  3.])