使用numpy将值传递给函数

时间:2019-03-30 17:38:08

标签: python function numpy

假设我有一个具有三个输入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

1 个答案:

答案 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)