我有两个多维数组
A = [ [1,2,3,4,5,6]
[3,4,5,6,7,8]
[5,6,7,8,9,0] ]
B = [ [a,b,c,d,e,f]
[g,h,i,j,k,l] ]
所以我想通过这样的建模来乘以这两个矩阵。
Output = [ [1*g +2*h+3*i+4*j+5*k+6*l],
[3*g +4*h+5*i+6*j+7*k+8*l],
[5*g +6*h+7*i+8*j+9*k+0*l] ]
我一直在尝试将阵列A拆分为A1、A2、A3,将阵列B拆分为B1和B2
A1= [1,2,3,4,5,6]
A2 = [3,4,5,6,7,8]
A3 = [5,6,7,8,9,0]
B1 = [a,b,c,d,e,f]
B2 = [g,h,i,j,k,l]
然后按照以下方式逐一编程。
LenData = len[B1]
Sum = 0
For i in range (LenData)
Output = A1[i] *B1[i]
Sum+= Output
Sum2 = 0
For i in range (LenData)
Output2 = A2[i] *B1[i]
Sum2 += Output2
Sum3 = 0
For i in range (LenData)
Output3 = A3[i] *B1[i]
Sum3 += Output3
有没有其他方法可以做到这一点而不吐出数组?。对于一个有大量数据的数组来说,这很难做到。
谢谢
numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]
result = map(lambda x, y: x + y, numbers1, numbers2)
arr = list(result)
#print(list(result))
print(sum(arr))
尝试这种方法:我使用map和lambda两者来获得2的乘积列表另一个列表。然后使用sum从该列表中获取总值。
您还可以创建一个以2个列表为参数的泛型函数,并为给定的2个列表提供产品列表。
Plz问我是否遗漏了什么,以及代码/方法是否有任何问题。
Numpy对于这种类型的操作非常有用。这里有一个小代码,可以实现您想要的。
import numpy as np
A = [[1,2,3,4,5,6],
[3,4,5,6,7,8],
[5,6,7,8,9,0]]
A = np.asarray(A)
B = np.random.randn(2, A.shape[-1])
results = np.sum(A * B[1], axis=1, keepdims=True)
print(f"{results.shape = }")
out:
results.shape = (3, 1)
注意,argkeepdims
只是为了保持形状(3,1(。如果希望得到形状为(3,(的向量作为结果,请将keepdims
设置为False。