我正在尝试确定矩阵的最大元素,但不断出现错误(For Loop 是必须的)
I am trying to determine the max element of the matrix but keep getting error (For Loop is MUST)
a = np.random.randint(1,100,(5,5))
max=a[0]
for n in range(1,100):
if(a[n] > max):
max = a[n]
print(max)
当我运行它;它给出了这个错误
if(a[n] > max):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我尝试修复它,但它又出现了另一个错误
a = np.random.randint(1,100,(5,5))
max=a[0]
for n in range(1,100):
if(a[n].all > max):
max = a[n]
print(max)
当我运行它再次弹出这个错误
if(a[n].all > max):
TypeError: '<' not supported between instances of 'int' and 'builtin_function_or_method'
你的第一个错误是因为 a[n]
是一个列表(因为你的矩阵是二维的)。
你的第二个错误是因为 a[n].all()
是一个函数,而不是属性 - 因此 ()
。此外,如果第 n
行中的所有值都是 non-zero(即真实),它只是 returns 真 - 不是您想要的。
要找到整个矩阵的最大值,您需要进行一些嵌套循环(或展平矩阵并按您的方式进行单循环)。尝试:
for i in range(5):
for j in range(5):
if a[i][j] > max_val:
max_val = a[i][j]
您还需要将初始最大值更改为二维矩阵的第一个值,因此 max_val = a[0][0]
.
但是,由于您使用的是 numpy
,只需执行 np.amax(a)
。
完整代码应该是:
a = np.random.randint(1,100,(5,5))
max_val = a[0][0]
for i in range(5):
for j in range(5):
if a[i][j] > max_val:
max_val = a[i][j]
print(max_val)
尽量避免for循环,试试numpy.ndarray.max()函数:
max = a.max()
print(max)
a = np.random.randint(1,100,(5,5))
max=a[0]
for n in range(1,100):
if(a[n] > max):
max = a[n]
print(max)
当我运行它;它给出了这个错误
if(a[n] > max):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我尝试修复它,但它又出现了另一个错误
a = np.random.randint(1,100,(5,5))
max=a[0]
for n in range(1,100):
if(a[n].all > max):
max = a[n]
print(max)
当我运行它再次弹出这个错误
if(a[n].all > max):
TypeError: '<' not supported between instances of 'int' and 'builtin_function_or_method'
你的第一个错误是因为 a[n]
是一个列表(因为你的矩阵是二维的)。
你的第二个错误是因为 a[n].all()
是一个函数,而不是属性 - 因此 ()
。此外,如果第 n
行中的所有值都是 non-zero(即真实),它只是 returns 真 - 不是您想要的。
要找到整个矩阵的最大值,您需要进行一些嵌套循环(或展平矩阵并按您的方式进行单循环)。尝试:
for i in range(5):
for j in range(5):
if a[i][j] > max_val:
max_val = a[i][j]
您还需要将初始最大值更改为二维矩阵的第一个值,因此 max_val = a[0][0]
.
但是,由于您使用的是 numpy
,只需执行 np.amax(a)
。
完整代码应该是:
a = np.random.randint(1,100,(5,5))
max_val = a[0][0]
for i in range(5):
for j in range(5):
if a[i][j] > max_val:
max_val = a[i][j]
print(max_val)
尽量避免for循环,试试numpy.ndarray.max()函数:
max = a.max()
print(max)