Python 类型错误:不可损坏的类型:';numpy.ndarray和#x27;在将元组转换为集合时
x和y是numpy阵列,大小为: x、 形状=(567、128、16)和 y、 形状=(567,1) TypeError出现在以下行中:Python 类型错误:不可损坏的类型:';numpy.ndarray和#x27;在将元组转换为集合时,python,numpy,Python,Numpy,x和y是numpy阵列,大小为: x、 形状=(567、128、16)和 y、 形状=(567,1) TypeError出现在以下行中: data_xy = tuple([x, y]) TypeError:Unshable类型:“numpy.ndarray”您不能散列numpy数组,因为它是可变的。集合是哈希表,要求其所有元素都是可哈希的 由于无法将set应用于数组的行,因此我建议改用np.unique: for data_class in sorted(set(data_xy[1])
data_xy = tuple([x, y])
TypeError:Unshable类型:“numpy.ndarray”您不能散列numpy数组,因为它是可变的。集合是哈希表,要求其所有元素都是可哈希的 由于无法将
set
应用于数组的行,因此我建议改用np.unique
:
for data_class in sorted(set(data_xy[1])):
一般来说,在numpy数组上运行for
循环是您应该努力解决的问题,因为这通常是不必要的,并且会降低速度
另一种解决方案是为行创建一个可散列的包装类型,以便您可以在集中使用它们。这将是相当缓慢的,不推荐,但可以用来说明这个概念:
s = np.unique(data_xy[1], axis=0)
s.sort()
for data_class in s:
不能散列numpy数组,因为它是可变的。集合是哈希表,要求其所有元素都是可哈希的
由于无法将set
应用于数组的行,因此我建议改用np.unique
:
for data_class in sorted(set(data_xy[1])):
一般来说,在numpy数组上运行for
循环是您应该努力解决的问题,因为这通常是不必要的,并且会降低速度
另一种解决方案是为行创建一个可散列的包装类型,以便您可以在集中使用它们。这将是相当缓慢的,不推荐,但可以用来说明这个概念:
s = np.unique(data_xy[1], axis=0)
s.sort()
for data_class in s:
集合不能包含可变类型。见《巴尔德曼》。集合可以包含可变类型。它们不能包含不可损坏的类型。@balderman。我已经发布了一个关于如何在中解决此问题的示例fact@MadPhysicist谢谢将有一个外观。集合不能包含可变类型。见《巴尔德曼》。集合可以包含可变类型。它们不能包含不可损坏的类型。@balderman。我已经发布了一个关于如何在中解决此问题的示例fact@MadPhysicist谢谢我来看看。