我正在尝试将Matlab代码转换为Python,但是当我在数组中添加零时,我收到错误。
Matlab代码:
N_bits=1e5;
a1=[0,1];
bits=a1(ceil(length(a1)*rand(1,N_bits)));
bits=[0 0 0 0 0 0 0 0 bits];
Python代码:
a1=array([0,0,1])
N_bits=1e2
a2=arange(0,2,1)
## Transmitter ##
bits1=ceil(len(a2)*rand(N_bits))
bits=a1[array(bits1,dtype=int)]
bits=array([0,0,0,0,0,0,0,0, bits])
我在最后一行收到错误:
Error: bits=array([0,0,0,0,0,0,0,0, bits]) ValueError: setting an array element with a sequence.
答案 0 :(得分:5)
您想要使用数组加入列表,请尝试
bits=concatenate(([0,0,0,0,0,0,0,0], bits))
其中concatenate()
为numpy.concatenate()
。您也可以使用zeros(8, dtype=int)
代替零列表(请参阅numpy.zeros()
)。
与Matlab不同,Python中的[0,0,0,0,0,0,0,0, bits]
之类的内容会创建一个列表,其中初始零后跟 embedded 列表。
Matlab的:
>> x = [1,2,3]
x =
1 2 3
>> [0,0,x]
ans =
0 0 1 2 3
的Python:
>>> x = [1,2,3]
>>>
>>> [0,0,x]
[0, 0, [1, 2, 3]]
>>>
>>> [0,0] + x
[0, 0, 1, 2, 3]