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'
2 回答

溫溫醬
TA貢獻1752條經驗 獲得超4個贊
您的第一個錯誤是因為它a[n]是一個列表(因為您的矩陣是二維的)。
你的第二個錯誤是因為a[n].all()是一個函數,而不是一個屬性 - 因此(). 另外,如果第 ' 行中的所有值n都非零(即 true),它只會返回 True - 這不是您想要的。
要找到整個矩陣的最大值,您需要執行一些嵌套循環(或展平矩陣并按照您的方式執行單個循環)。嘗試:
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)
添加回答
舉報
0/150
提交
取消