我试图做numpy的下面,而无需使用一个循环的操作:矢量化在numpy的
- 我有维度的矩阵X N * d和尺寸为N的向量y y保存整数范围从1到K.
- 我想获得大小为K * d的矩阵M,其中M [i,:] = np.mean(X [y == i,:],0)
我可以在不使用循环的情况下实现吗?
随着循环,它会像这样。
import numpy as np
N=3
d=3
K=2
X=np.eye(N)
y=np.random.randint(1,K+1,N)
M=np.zeros((K,d))
for i in np.arange(0,K):
line=X[y==i+1,:]
if line.size==0:
M[i,:]=np.zeros(d)
else:
M[i,:]=mp.mean(line,0)
在此先感谢您。
是否K == N? y的值是否独特? –
如果你显示了一些代码,这将是很酷的。 – Bonifacio2
不,不。例如,如果K = 2,X = np.eye(3),Y = [1 2 1],我想M是[[1/2 1/2],[0 1 0]]。 – popuban