我試圖做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