假设我有这样的数据帧:
Type Vector
A [0.2340, 0.5463, 0.5652, 0.3243, 0.3243]
B [0.3244, 0.5566, 0.2344, 0.1213, 0.9821]
C [0,5652, 0.3453, 0.3454, 0.5656, 0.6766]
D [0,5125, 0.3345, 0.1112, 0.4545, 0.6324]
我想用np.linalg.norm
计算这些向量的距离。我想要的是
Type Vector distance1 distance2
A [0.2340, 0.5463, 0.5652, 0.3243, 0.3243] A-B A-C
distance3
A-D
作为新列。 编辑:我也这么做过:
df['vector'] = df['vector'].apply(lambda x: np.array(x))
print(type(df['vector'].iloc[0]))
结果是:
<class 'numpy.ndarray'>
当我简单地说:
print(np.linalg.norm(df['vector'].iloc[0] -df['vector'].iloc[1]))
我得到一个浮点值
但是,我迭代得到的行:
ValueError: Wrong number of items passed 544, placement implies 1
我怎么能解决呢? 注意:向量的长度确实是544个字符
如果使用pickle,请使用pickle导入:
由于pandas是基于numpy构建的,因此现在可以将所需列作为numpy数组:
请注意你的向量-他们没有相同的大小!例如C和D的长度为6。我想你的逗号应该是第一个值的一个点。你知道吗
编辑:
一个完整的例子是:
编辑2(与我的评论相关):
我建议您使用所需的值生成一个列表或dict,因为将所有内容附加到表中可能会导致一个非常大的表。 代码将如下所示:
相关问题 更多 >
编程相关推荐