Python np.append不适用于numpy.ndarray类型的字典值

问题描述 投票:0回答:1

我有一个给定两个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语句不起作用。应该怎么办?

python arrays numpy append
1个回答
0
投票

您可以将内置函数zipnumpy.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]}
© www.soinside.com 2019 - 2024. All rights reserved.