亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我試圖確定矩陣的最大元素,但不斷收到錯誤(For 循環是必須的)

我試圖確定矩陣的最大元素,但不斷收到錯誤(For 循環是必須的)

汪汪一只貓 2024-01-16 15:19:40
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)


查看完整回答
反對 回復 2024-01-16
?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

您應該盡可能避免 for 循環,讓我們嘗試一下numpy.ndarray.max()函數:


max = a.max()

print(max)


查看完整回答
反對 回復 2024-01-16
  • 2 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號