首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Numpy中的行权重计算

Numpy中的行权重计算
EN

Stack Overflow用户
提问于 2021-02-09 21:05:02
回答 1查看 52关注 0票数 0

X是shape (N,D)的数组,gamma是shape (N,K)的数组。

现在我想计算所有向量的加权和D-dimensional k = 0,1,2,...K-1

s[k] = gamma[1,k]*X[1,:] + ... + gamma[N,k]*X[N,:]

如何在numpy中高效地执行此操作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-09 21:24:20

这可以通过使用np.dot来实现

代码语言:javascript
运行
复制
import numpy as np
N = 3
D = 5
K = 2

x = np.arange(N*D).reshape((N,D))
gamma = np.arange(N*K).reshape((N,K))

# (K,N) , (N,D) -> (K,D)
np.dot(gamma.T,x) # equivalently, np.matmul(gamma.T,x) or gamma.T @ x

>>> array([[ 50,  56,  62,  68,  74],
           [ 65,  74,  83,  92, 101]])

它很容易用显式的for循环验证求和:

代码语言:javascript
运行
复制
for k in range(K):
    gamma[0,k]*x[0,:] + gamma[1,k]*x[1,:] + gamma[2,k]*x[2,:]
>>> array([50, 56, 62, 68, 74])
>>> array([65, 74, 83, 92, 101])

或者,如果你喜欢爱因斯坦求和符号,你可以尝试使用np.einsum

代码语言:javascript
运行
复制
np.einsum('ji,jk', gamma, x) 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66119573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档