Python NumPy错误:包含多个元素的数组的真值不明确。使用a.any()或a.all()

Python NumPy错误:包含多个元素的数组的真值不明确。使用a.any()或a.all(),python,python-3.x,numpy,Python,Python 3.x,Numpy,我正在使用numpy编写图像卷积码: def CG(A, b, x, imax=10, epsilon = 0.01): steps=np.asarray(x) i = 0 r = b - A * x d = r.copy() delta_new = r.T * r delta_0 = delta_new while i < imax and delta_new > epsilon**2 * delta_0: q

我正在使用numpy编写图像卷积码:

def CG(A, b, x, imax=10, epsilon = 0.01):
    steps=np.asarray(x)
    i = 0
    r = b - A * x
    d = r.copy()
    delta_new = r.T * r
    delta_0 = delta_new
    while i < imax and delta_new > epsilon**2 * delta_0:
        q = A * d
        alpha = float(delta_new / (d.T * q))
        x = x + alpha * d
        if i%50 == 0:
            r = b - A * x
        else:
            r = r - alpha * q
        delta_old = delta_new
        delta_new = r.T * r
        beta = float(delta_new / delta_old)
        d = r + beta * d
        i = i + 1
        steps = np.append(steps, np.asarray(x), axis=1)
    return steps
在线
而iε**2*delta_0:


谁能告诉我我做错了什么

delta_new
是一个矩阵。未为矩阵定义线性算术比较运算。您试图通过简单的标量比较将一个值矩阵与另一个值矩阵进行比较。Python不知道如何从中获得一个t/F结果


我怀疑你想要矩阵上的一些标量属性,比如行列式。

delta\u new
是一个矩阵。未为矩阵定义线性算术比较运算。您试图通过简单的标量比较将一个值矩阵与另一个值矩阵进行比较。Python不知道如何从中获得一个t/F结果


我怀疑你想要矩阵上的一些标量属性,比如行列式。

实际上你有一个矩阵
delta_new
,它与另一个产生多个真值的矩阵
epsilon**2*delta_0
相比较

对于多个真值,没有确定的是或否


因此,该条件可以使用
.all
(和每个元素)或
.any
(或每个元素)来解决此多重性。

有效地,您有一个矩阵
delta_new
,它与另一个矩阵
epsilon**2*delta_0
进行比较,后者产生多个真值

对于多个真值,没有确定的是或否


因此,该条件可以使用
。所有
(和每个元素)或
。任何
(或每个元素)来解决此多重性。

看起来
delta_new
delta_0
都是Numpy数组,Numpy不知道如何比较它们

例如,假设您选取两个随机Numpy数组并尝试比较它们:

>>> a = np.array([1, 3, 5])
>>> b = np.array([5, 3, 1])
>>> print(a<b)
array([True, False, False])
>>> bool(a<b)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>a=np.array([1,3,5])
>>>b=np.数组([5,3,1])

>>>print(a>>bool(a>>)(a>>(a看起来
delta\u new
delta\u 0
是Numpy数组,Numpy不知道如何比较它们

例如,假设您选取两个随机Numpy数组并尝试比较它们:

>>> a = np.array([1, 3, 5])
>>> b = np.array([5, 3, 1])
>>> print(a<b)
array([True, False, False])
>>> bool(a<b)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>a=np.array([1,3,5])
>>>b=np.数组([5,3,1])

>>>打印(a>>bool(a>>)(a>>(a>>(a>>)对Stackoverflow很重要!要想从网站中获得最大的收益,这包括创建一个示例。欢迎来到Stackoverflow!要想从网站中获得最大的收益,这包括创建一个示例。啊……这很有意义。我是一个该死的白痴!!谢谢:)啊..这很有道理。我是个该死的白痴!!谢谢:)
>>> (a<b).any()
True

>>> (a<b).all()
False