假设我有一个具有三个输入prob(x,mu,sig)的函数。 尺寸:
A[p..r]
现在,我有一个数据集X,均值矩阵M和std。偏差矩阵sigma。 大小为:-
x = 1 x 3
mu = 1 x 3
sig = 3 x 3
对于每个m值,我都希望在函数prob中传递k的所有值以计算我的责任值。
我可以使用for循环将值一一传递。 在numpy中这样做会是更好的方法。
相关代码供参考:
X : m x 3.
mean : k x 3.
sigma : k x 3 x 3
答案 0 :(得分:0)
如果可以使用单个for循环,则可以使用以下内容,
import itertools
sigma.shape = k, 9
zipped_array = np.array(list(zip(mean, sigma)))
all_possible_combo = list(itertools.product(X, zipped_array))
list_len = len(all_possible_combo) # = m * k
s = np.zeros(k)
responsibility = np.zeros((X.shape[0],k))
for i in range(list_len):
X_arow = all_possible_combo[i][0]
mean_single = all_possible_combo[i][1]
sigma_single = all_possible_combo[i][2].reshape((3, 3))
s = prob(X_arow, mean_single, sigma_single)
s = s/s.sum()
responsibility[i] = s
responsibility = np.transpose(responsibility)