我有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'
我做错了什么?
答案 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作为你的形状的关键。这不起作用,因为该对象不可清除,您可能希望使用其他东西作为您的密钥。