python - 如何使浮点数到浮点数的函数在列表上表现为逐元素操作?

7 浏览
0 Comments

python - 如何使浮点数到浮点数的函数在列表上表现为逐元素操作?

我有以下代码:

def tau_r(u):
    return (u_1 < u < u_2) * (T1 - T2) + T2
if __name__ == "__main__":
    figure()
    plot(u, tau_r(u))
    show()

当我运行它时,出现以下错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我猜是因为它将u视为一个列表,而它应该将任务分别应用于列表的每个元素。

我该如何修复这个问题?

0
0 Comments

问题出现的原因是因为在使用matplotlib绘图时,其不支持生成器作为输入。而在上述代码中,使用了生成器map(tau_r, u)作为输入,因此需要将其转换为列表形式list(map(tau_r, u))。

解决方法是将生成器转换为列表形式,即使用list()函数将map(tau_r, u)转换为列表形式。这样,就可以将转换后的列表作为参数传递给matplotlib的绘图函数,从而解决了matplotlib不支持生成器作为输入的问题。

需要注意的是,对于较长的列表u来说,使用map()函数和list()函数将生成器转换为列表的方法会非常慢。因此,在处理较长列表时,应考虑使用其他更高效的方法来实现相同的功能。

0