首页 > 解决方案 > Numpy:具有多个元素的数组的真值是不明确的。使用 a.any() 或 a.all()

问题描述

我知道这个错误之前已经发布过,但我不知道如何继续。我想写一个函数来返回一个方波,然后。

这是我的代码:

def V_in(t):

    v  = np.floor(2*t)      

    if v % 2 == 0   
        V_in = 1
    else: 
        V_in = -1

    return V_in


t = np.arange(0,10,1000)

square_wave = V_in(tpoints)

plt.plot(tpoints, square_wave);

当我运行它时,我收到以下错误消息:

ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()

我发现如果我在所有值上创建一个循环t并将它们存储在一个数组中,我可以让它工作,但是当我尝试在第二个函数中使用它时它不起作用。

def f(V,t):
    return (V_in(t) - V)

哪里V是初始值。然后在 RK4 算法中使用第二个函数来求解电压。

标签: pythonnumpy

解决方案


您可以使用 for 循环更改数组值,也可以使用矢量化操作 usingnp.where一次性进行所有更改,如下所示。np.where(V%2==0, 1, -1)将 1 分配给可被 2 整除的数组值,将 -1 分配给不可被 2 整除的值。

def V_in(t):
    V  = np.floor(2*t)  
    V = np.where(V%2==0, 1, -1)
    return V


t = np.linspace(0,10,100)

square_wave = V_in(t)

plt.plot(t, square_wave);

在此处输入图像描述


推荐阅读