用numpy数组进行Dict理解?

时间:2018-03-28 17:59:10

标签: python numpy dictionary list-comprehension

我有4个NumPy数组:a,b,c,d

我正在投放:{i: i.shape for i in [a,b,c,d]}

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
    {i:i.shape for i in [a,b,c,d]}
  File "<stdin>", line 1, in <dictcomp>
    {i:i.shape for i in [a,b,c,d]}
TypeError: unhashable type: 'numpy.ndarray'

我做错了什么?

4 个答案:

答案 0 :(得分:4)

您不能将numpy数组作为键。尝试使用类似的东西:

{i:arr.shape for i,arr in enumerate([a,b,c,d])}

答案 1 :(得分:4)

您的代码尝试将numpy数组作为键,而不是将数组分配给的变量名。像下面的东西可以工作

{i[1]: i[0].shape for i in [(a, "a"), (b, "b"), (c, "c") , (d, "d")]}

答案 2 :(得分:3)

另一个解决方案(只是为了给你选项,因为其他人已经发布了好的选项):

{name: arr.shape for arr,name in zip([a,b,c,d],'abcd')}

答案 3 :(得分:1)

你正在尝试使用numpy.ndarray作为你的形状的关键。这不起作用,因为该对象不可清除,您可能希望使用其他东西作为您的密钥。