Ich versuche, die folgenden auf Numpy zu tun, ohne eine Schleife:Vectorize eine Operation in Numpy
- Ich habe eine Matrix X der Dimension N * d und einen Vektor y der Dimension N. y ganze Zahlen enthält von 1 bis K.
- Ich versuche, eine Matrix M der Größe K * d zu erhalten, wobei M [i,:] = np.mean (X [y == i,:], 0)
Kann ich dies ohne eine Schleife erreichen?
Mit einer Schleife würde es so etwas gehen.
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)
Vielen Dank im Voraus.
Ist K == N? Sind die Werte von y einzigartig? –
Es wäre cool, wenn Sie Code zeigen würden. – Bonifacio2
Nein und nein. Wenn zum Beispiel K = 2, X = np.eye (3), Y = [1 2 1], möchte ich, dass M gleich [[1/2 0 1/2], [0 1 0]] ist. – popuban