如何使用循环比较带有标量的数组元素?

时间:2019-04-30 08:08:12

标签: python-3.x matlab

我想像在MATLAB中一样模拟Python中的脉冲幅度调制(PAM)的误码率(BER)。

我尝试使用ii作为索引变量来运行循环,但出现错误,提示“具有多个元素的数组的真值不明确”。我尝试使用Google搜索,但无法理解答案。我已经在MATLAB中进行编码,现在想学习Python。我是Python的入门者。

N = int(1e6); # number of bits
for ii in range(N):
    if data_bits[ii]==1:
        y = sm

我在data_bits [ii] == 1行出现错误。在MATLAB中不会发生这种情况。

注意:我正在显示有问题的部分。这段代码可能并不完整,而只是突出了我在理解上遇到的困难。

1 个答案:

答案 0 :(得分:1)

您不会使用for循环开始。您可以简单地“选择”正确的值并将其值设置为其他值:

import numpy as np

arr = np.random.rand(10,1)
print(arr)

# select all values > 0.5 and set to 5
arr[(arr>0.5)] = 5

print(arr)

输出:

# random values to begin with
[[0.00859812]
 [0.03146223]
 [0.55717924]
 [0.14131905]
 [0.52429833]
 [0.45643492]
 [0.4409319 ]
 [0.96135169]
 [0.41511691]
 [0.33970605]]

# after selecting and setting to 5
[[0.00859812]
 [0.03146223]
 [5.        ]
 [0.14131905]
 [5.        ]
 [0.45643492]
 [0.4409319 ]
 [5.        ]
 [0.41511691]
 [0.33970605]]