我有一个给定两个numpy数组的函数,将它们转换为字典,如下所示
def seggregate_based_on_y(X,y):
dictionary={}
for index in range(len(y)):
if y[index] in dictionary.keys():
np.append(dictionary[y[index]],X[index])
else:
dictionary[y[index]]=np.array([X[index]])
return dictionary
用于以下输入
X=np.array([[1,1],[2,2],[3,3],[4,4],[5,5]])
y=np.array([2,3,2,3,4])
d=seggregate_based_on_y(X,y)
print(d)
我希望'd'为{2: array([[1, 1],[3,3]]), 3: array([[2, 2],[4,4]]), 4: array([[5, 5]])}
,但我得到'd'为{2: array([[1, 1]]), 3: array([[2, 2]]), 4: array([[5, 5]])}
,即if语句不起作用。应该怎么办?
您可以将内置函数zip
与numpy.ndarray.tolist一起使用:
X=np.array([[1,1],[2,2],[3,3],[4,4],[5,5]])
y=np.array([2,3,2,3,4])
dict(zip(y.tolist(), X.tolist()))
输出:
{2: [3, 3], 3: [4, 4], 4: [5, 5]}