我有一個項目,其中,在將數組相乘之后,我必須將它們排列成一個單獨的數組(按元素)并得到它們的總和。As an example:a = [1, 0, 1]b = [[3,5,2], [5,4,3], [5,2,2]]c = a*bc = [ [3, 5, 2] [0, 0, 0] [5, 2, 2] ]現在,我想將答案放在一個單獨的數組元素中,例如:r1 = [3, 0, 5]r2 = [5, 0, 2]r3 = [2, 0, 2]然后,得到它的總和。sum_r1 = [8]sum_r2 = [7]sum_r3 = [4]到目前為止,我只能對乘法進行編碼。我仍在為后續步驟嘗試適當的代碼。我的代碼如下所示: [EDIT] def fitness_score(a, b): c = numpy.multiply(a, b) trns = numpy.transpose(c) s = numpy.sum(trns, axis=1) return s輸出給出了答案,但它有類似這樣的錯誤:ValueError:操作數無法與形狀 (500,3) (3,3) 一起廣播。請注意,a 中的值是隨機獲得的。任何幫助,將不勝感激!先感謝您!
1 回答

慕少森
TA貢獻2019條經驗 獲得超9個贊
您可以使用 NumPy,只需在第二個矩陣上使用轉置即可獲得所需的結果。
import numpy as np
a = [1, 0, 1]
b = [[3,5,2], [5,4,3], [5,2,2]]
a = np.array(a)
b = np.array(b)
mul = a*b.T
#array([[3, 0, 5],
# [5, 0, 2],
# [2, 0, 2]])
s = np.sum(a*b.T, axis=1)
#array([8, 7, 4])
如果您有 a 的500 by 3異形數組。你可以試試這個:
import numpy as np
a = [[1, 0, 1] for _ in range(500)]
b = [[3,5,2], [5,4,3], [5,2,2]]
a = np.array(a)
b = np.array(b)
mul = [a_c*b.T for a_c in a]
#array([[3, 0, 5],
# [5, 0, 2],
# [2, 0, 2]])
s = np.sum(mul, axis=-1)
print(s)
慕課專欄
更多
添加回答
舉報
0/150
提交
取消