我使用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倍。
可能是什么问题?
答案 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.])