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

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

如何比較兩個矩陣的每個元素

如何比較兩個矩陣的每個元素

慕標琳琳 2023-08-15 16:47:27
我想比較具有相同維度的兩個矩陣的每個元素。我想知道,第一個矩陣中的一個元素是否小于第二個矩陣中具有相同索引的另一個元素。我想用第一個矩陣的值填充第三個矩陣,但是適用我的標準的每個條目都應該是 0。下面我將展示我的方法:a = ([1, 2, 3], [3, 4, 5], [5, 6, 7])b = ([2, 3, 1], [3, 5, 4], [4, 4, 4])c = np.zeros(a.shape)for i, a_i in enumerate(a):? ? a_1 = a_i? ? for i, b_i in enumerate(b):? ? ? ? b_1 = b_i? ? ? ? if a_1 < b_1:? ? ? ? ? ? c[i] = 0? ? ? ? else:? ? ? ? ? ? c[i] = a_1如果我在這里犯了任何簡單的錯誤,我很抱歉,但我對 python很陌生。我發現了一些關于如何查找匹配條目的帖子,但我不知道是否有可以使用該方法的解決方案。我很感激任何幫助,謝謝。
查看完整描述

2 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

就我個人而言,我發現僅使用索引來遍歷矩陣更容易:


a = ([1, 2, 3], [3, 4, 5], [5, 6, 7])

b = ([2, 3, 1], [3, 5, 4], [4, 4, 4])


c = ([0, 0, 0], [0, 0, 0], [0, 0, 0])


for i in range(len(a)):

    for j in range(len(a[0])):

        if a[i][j] < b[i][j]:

            c[i][j] = 0

        else:

            c[i][j] = a[i][j]

            

如果使用索引循環 a 和 b,則可以訪問 c 中的相同位置。


i 索引跟蹤您所在的列表(即,a 中索引 0 處的列表是 [1, 2, 3],b 中索引 0 處的列表是 [2, 3, 1])。

j 索引跟蹤您所在的每個列表的哪個元素(即,a 中索引 0 處的列表中的元素 0 為 1,b 中索引 0 處的列表中的元素 0 為 2)。

這樣您就可以直接訪問 3 個矩陣中任意一個的任意元素。此外,由于 c 中的每個元素都以 0 開頭,因此當 a 中的元素小于 b 中的元素時,您不需要將其重新分配為 0,因此您可以簡化 if/else 語句,只需執行以下操作即可


if a[i][j] >= b[i][j]:

    c[i][j] = a[i][j]


查看完整回答
反對 回復 2023-08-15
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

我真的很喜歡您的解決方案和反饋,非常感謝您!


然而,與此同時,我自己找到了一個解決方案(我將只輸入我使用的循環):


for i, a_i in enumerate(a):

    a_1 = a_i

    c = a_1

    for i, b_i in enumerate(b):

        b_1 = b_i

        c[np.where(c < b_1)] = np.nan

您認為計算更快的解決方案是什么?


查看完整回答
反對 回復 2023-08-15
  • 2 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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