簡體   English   中英

從兩個 arrays 的乘積創建一個數組元素

[英]Creating an array element-wise from product of two arrays

我有一個項目,其中在乘以 arrays 之后,我必須將它們排列成一個單獨的數組(按元素)並得到它們的總和。

As an example:
a = [1, 0, 1]
b = [[3,5,2], [5,4,3], [5,2,2]]
c = a*b
c = [ [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

Output 給出了答案,但它有一個類似這樣的錯誤:ValueError:操作數無法與形狀(500,3)(3,3)一起廣播。 請注意,a 中的值是隨機獲得的。

任何幫助,將不勝感激! 先感謝您!

您可以使用 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])

如果您有一個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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM