我有一个函数,给定两个numpy数组,将它们转换成一个dictionary,如下所示
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
:输出:
首先,正如评论所说,您必须为字典分配新值。请参阅以下修复程序:
根据给定的数据输出:
这与预期结果不同,因为
np.append
将附加到同一个向量。要获得所需的输出,请使用np.vstack
这里的输出是:
我希望这有帮助
相关问题 更多 >
编程相关推荐