首页 > 解决方案 > 如何将 numpy 数组分解为列表并创建字典?

问题描述

我有一个以下列表和一个 numpy 数组:对于列表:

features = np.array(X_train.columns).tolist() 

results :

['Attr1', 'Attr2', 'Attr3', 'Attr4', 'Attr5', 'Attr6', 'Attr7', 'Attr8', 'Attr9', 'Attr10', 'Attr11', 'Attr12', 'Attr13', 'Attr14', 'Attr15', 'Attr16', 'Attr17', 'Attr18', 'Attr19', 'Attr20', 'Attr21', 'Attr22', 'Attr23', 'Attr24', 'Attr25', 'Attr26', 'Attr27', 'Attr28', 'Attr29', 'Attr30', 'Attr31', 'Attr32', 'Attr33', 'Attr34', 'Attr35', 'Attr36', 'Attr37', 'Attr38', 'Attr39', 'Attr40', 'Attr41', 'Attr42', 'Attr43', 'Attr44', 'Attr45', 'Attr46', 'Attr47', 'Attr48', 'Attr49', 'Attr50', 'Attr51', 'Attr52', 'Attr53', 'Attr54', 'Attr55', 'Attr56', 'Attr57', 'Attr58', 'Attr59', 'Attr60', 'Attr61', 'Attr62', 'Attr63', 'Attr64']

和数组名 ab

aa=(lr.coef_) #I put a regression result on numpy array so I can split them, I want to put them as a list
ab=np.split(aa,len(aa))

results :

[array([[ 0.04181571,  0.62369216, -0.23559375,  0.78663624, -0.13935947,
        -0.1118698 , -0.05672835, -1.73851643, -0.42134655,  0.79001534,
         0.05048936, -0.09287526,  0.10103251, -0.0587092 , -0.05300849,
         0.72827807,  1.15870475, -0.13861187, -0.42572654,  0.19369654,
        -0.33319238, -0.06805035,  0.14067888, -0.07418516, -0.04400882,
        -0.78701564, -0.10921816, -0.26166642,  0.06800944,  0.07672145,
         0.22109349, -0.15389544,  2.41697614,  0.21749429, -0.0766771 ,
         0.77580103,  0.04128744, -0.92835969, -0.41802274,  0.89865658,
        -0.12102089, -0.28887104,  0.10421332,  0.14445757,  0.02719274,
        -1.73622976, -0.34980593,  0.35199196,  0.56110135,  0.4460968 ,
        -1.13265322,  0.26188587,  0.14336352,  0.2341355 , -0.10077637,
         0.43080231, -0.05521557, -0.1996818 ,  0.00513076, -0.14477274,
         0.04712721,  0.15380395, -2.51974007, -0.03988658]])]

现在,我想为他们制作一本字典,但在这里我对如何将数组转换为列表感到困惑。

这就是我所做的:

for x in features :
    for y in ab:
        print({x:y})

and the result is not as desired, since it's failed to break down the array :

{'Attr1': array([[ 0.04181571,  0.62369216, -0.23559375,  0.78663624, -0.13935947,
        -0.1118698 , -0.05672835, -1.73851643, -0.42134655,  0.79001534,
         0.05048936, -0.09287526,  0.10103251, -0.0587092 , -0.05300849,
         0.72827807,  1.15870475, -0.13861187, -0.42572654,  0.19369654,
        -0.33319238, -0.06805035,  0.14067888, -0.07418516, -0.04400882,
        -0.78701564, -0.10921816, -0.26166642,  0.06800944,  0.07672145,
         0.22109349, -0.15389544,  2.41697614,  0.21749429, -0.0766771 ,
         0.77580103,  0.04128744, -0.92835969, -0.41802274,  0.89865658,
        -0.12102089, -0.28887104,  0.10421332,  0.14445757,  0.02719274,
        -1.73622976, -0.34980593,  0.35199196,  0.56110135,  0.4460968 ,
        -1.13265322,  0.26188587,  0.14336352,  0.2341355 , -0.10077637,
         0.43080231, -0.05521557, -0.1996818 ,  0.00513076, -0.14477274,
         0.04712721,  0.15380395, -2.51974007, -0.03988658]])}
{'Attr2': array([[ 0.04181571,  0.62369216, -0.23559375,  0.78663624, -0.13935947,
        -0.1118698 , -0.05672835, -1.73851643, -0.42134655,  0.79001534,
         0.05048936, -0.09287526,  0.10103251, -0.0587092 , -0.05300849,
         0.72827807,  1.15870475, -0.13861187, -0.42572654,  0.19369654,
        -0.33319238, -0.06805035,  0.14067888, -0.07418516, -0.04400882,
        -0.78701564, -0.10921816, -0.26166642,  0.06800944,  0.07672145,
         0.22109349, -0.15389544,  2.41697614,  0.21749429, -0.0766771 ,
         0.77580103,  0.04128744, -0.92835969, -0.41802274,  0.89865658,
        -0.12102089, -0.28887104,  0.10421332,  0.14445757,  0.02719274,
        -1.73622976, -0.34980593,  0.35199196,  0.56110135,  0.4460968 ,
        -1.13265322,  0.26188587,  0.14336352,  0.2341355 , -0.10077637,
         0.43080231, -0.05521557, -0.1996818 ,  0.00513076, -0.14477274,
         0.04712721,  0.15380395, -2.51974007, -0.03988658]])}
{'Attr3': array([[ 0.04181571,  0.62369216, -0.23559375,  0.78663624, -0.13935947,
        -0.1118698 , -0.05672835, -1.73851643, -0.42134655,  0.79001534,
         0.05048936, -0.09287526,  0.10103251, -0.0587092 , -0.05300849,
         0.72827807,  1.15870475, -0.13861187, -0.42572654,  0.19369654,
        -0.33319238, -0.06805035,  0.14067888, -0.07418516, -0.04400882,
        -0.78701564, -0.10921816, -0.26166642,  0.06800944,  0.07672145,
         0.22109349, -0.15389544,  2.41697614,  0.21749429, -0.0766771 ,
         0.77580103,  0.04128744, -0.92835969, -0.41802274,  0.89865658,
        -0.12102089, -0.28887104,  0.10421332,  0.14445757,  0.02719274,
        -1.73622976, -0.34980593,  0.35199196,  0.56110135,  0.4460968 ,
        -1.13265322,  0.26188587,  0.14336352,  0.2341355 , -0.10077637,
         0.43080231, -0.05521557, -0.1996818 ,  0.00513076, -0.14477274,
         0.04712721,  0.15380395, -2.51974007, -0.03988658]])}.......

你能帮我建立一个ab数组列表吗?我应该如何把它们变成字典?

Th expected results : {[Attr1 : 0.04181571],  Attr2 : 0.623692160, and so on...}

非常感谢!

标签: pythonnumpy

解决方案


您可以使用内置函数zip

dict(zip(features, ab[0].ravel()))

您可以查看numpy.ravel的文档

返回一个连续的展平数组。

返回一个包含输入元素的一维数组。


因为您的ab变量是使用numpy.split ab获得的,所以如您所示,它是一个带有一个 numpy 数组的列表


推荐阅读