Python 我遇到了一个错误:第21行,在<;模块>;ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all() 将numpy导入为np Q=np.loadtxt(打开(“D:\data\u homotation\u 4\Q.csv”,“rb”),分隔符=“,”,skiprows=0) b=np.loadtxt(打开(“D:\data\u作业\u 4\b.csv”,“rb”),分隔符=“,”,skiprows=0) def f(x): 返回1/2*x.T@Q@x+b.T@x def梯度(x): 返回Q@x-b n=2000 x_t=np.零((100,1)) α=0.1 β=0.3 预计到达时间=3.887e-6 对于范围(n+2)内的t: g_t=梯度(x_t) k=0 尽管如此: 如果f(x_t-beta**k*g_t)

Python 我遇到了一个错误:第21行,在<;模块>;ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all() 将numpy导入为np Q=np.loadtxt(打开(“D:\data\u homotation\u 4\Q.csv”,“rb”),分隔符=“,”,skiprows=0) b=np.loadtxt(打开(“D:\data\u作业\u 4\b.csv”,“rb”),分隔符=“,”,skiprows=0) def f(x): 返回1/2*x.T@Q@x+b.T@x def梯度(x): 返回Q@x-b n=2000 x_t=np.零((100,1)) α=0.1 β=0.3 预计到达时间=3.887e-6 对于范围(n+2)内的t: g_t=梯度(x_t) k=0 尽管如此: 如果f(x_t-beta**k*g_t),python,numpy,Python,Numpy,如它所说,在if条件下,你在两个数组之间进行比较——这两个数组都有多个值,而if条件对所有数组进行计算,但不知道如何将它们压缩成一个真值——这就是为什么它要求你使用any或all: 请尝试以下示例: if f(x_t - beta**k * g_t) <= f(x_t) - alpha * beta**k * np.linalg.norm(g_t)**2: 考虑在您的情况下什么是有意义的,并使用它(无论是any还是all)f是一个数组。不能调用数组。您有一个名为f的函数,但随后您为该名称

如它所说,在
if
条件下,你在两个数组之间进行比较——这两个数组都有多个值,而if条件对所有数组进行计算,但不知道如何将它们压缩成一个真值——这就是为什么它要求你使用
any
all

请尝试以下示例:

if f(x_t - beta**k * g_t) <= f(x_t) - alpha * beta**k * np.linalg.norm(g_t)**2:

考虑在您的情况下什么是有意义的,并使用它(无论是
any
还是
all

f
是一个数组。不能调用数组。您有一个名为
f
的函数,但随后您为该名称分配了一个数组。在
if
语句中有许多
歧义
帖子,其中数组比较是在
if
语句中。你希望这条线做什么?向我们展示
…您可以将该行分解为临时变量中的部分,并对其进行实验。作为初学者,
foo=f(x_t-beta**k*g_t)这个问题应该得到澄清。当给定两个数组时,您希望小于运算符做什么?@juanpa.arrivillaga是的,这就是问题所在。谢谢
if f(x_t - beta**k * g_t) <= f(x_t) - alpha * beta**k * np.linalg.norm(g_t)**2:
import numpy as np
arr = np.array([2,3])
arr1 = np.array([1,4])
arr, arr1

if (arr<arr1):
    pass
import numpy as np
arr = np.array([2,3])
arr1 = np.array([1,4])
arr, arr1

if (arr<arr1).all():
    pass