Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我需要用两个矩阵做一个加权平均_Python_Numpy_Average - Fatal编程技术网

Python 我需要用两个矩阵做一个加权平均

Python 我需要用两个矩阵做一个加权平均,python,numpy,average,Python,Numpy,Average,我不是程序员,我是生物学家,我需要用两个矩阵来做以下工作: matrix_de_pesos= np.array([[0.1, 0.2, 0.3],[0.4, 0.5, 0.6],[0.7, 0.8, 0.9]]) matrix_de_embeddings= np.array([[1,2,3],[4,5,6],[7,8,9],[10,20,30]]) 一个矩阵包含权重,另一个矩阵包含嵌入。我需要将权重矩阵每列的每个元素乘以嵌入矩阵的每列。然后求向量之和,再除以嵌入矩阵的列和 我是这样做的: n=

我不是程序员,我是生物学家,我需要用两个矩阵来做以下工作:

matrix_de_pesos= np.array([[0.1, 0.2, 0.3],[0.4, 0.5, 0.6],[0.7, 0.8, 0.9]])
matrix_de_embeddings= np.array([[1,2,3],[4,5,6],[7,8,9],[10,20,30]])
一个矩阵包含权重,另一个矩阵包含嵌入。我需要将权重矩阵每列的每个元素乘以嵌入矩阵的每列。然后求向量之和,再除以嵌入矩阵的列和

我是这样做的:

n=[]
for j in range(matrix_de_pesos.shape[1]):
    auxiliar = np.zeros((matrix_de_embeddings.shape[0], matrix_de_embeddings.shape[1]))
    for i in range(matrix_de_pesos.shape[0]):
        for x in range(matrix_de_embeddings.shape[0]):
            auxiliar[x][i] = matrix_de_pesos[i][j]*matrix_de_embeddings[x][i]
    resultado = np.sum(auxiliar,axis=1)/auxiliar.shape[1]
    n.append(resultado)
matrix_final = np.array(n)
matrix_final = matrix_final.T
print(matrix_final)
结果是:

[[ 1.   1.2  1.4]
 [ 2.2  2.7  3.2]
 [ 3.4  4.2  5. ]
 [10.  12.  14. ]]
我的代码适用于这个小矩阵,但当我将其用于我应该执行的矩阵时,(这种形状:权重
(5509715677)
,嵌入
(30055132)
),代码非常慢。 我试着用函数
np.average
来做这件事,但我不知道代码是否有效。 我需要任何解决办法。
非常感谢您的帮助。

您可以使用矩阵乘法

import numpy as np
print(np.matmul(matrix_de_embeddings,matrix_de_pesos)/matrix_de_embeddings.shape[1])

< /P>你能提供一个简单的例子“YaZAa?@ Yaiza”,你可以通过思考并行性来考虑NUMBA。太好了!这确实是一个马特穆尔反复思考的问题。回答得很好…@yatu我看到了你的帖子,之后我学习了广播,谢谢你。