【发布时间】:2016-07-05 22:16:06
【问题描述】:
我正在尝试根据某些特征创建一个特征矩阵,然后找到项目的黑白距离。 出于测试目的,我现在只使用 2 个点。
数据:我拥有的项目列表
specs : 项目的特征字典(我使用它们的键值作为项目的特征)
功能:功能列表
这是我使用 numpy 零矩阵的代码:
import numpy as np
matrix = np.zeros((len(data),len(features)),dtype=bool)
for dataindex,item in enumerate(data):
if dataindex > 5:
break
specs = item['specs']
values = [value.lower() for value in specs.values()]
for idx,feature in enumerate(features):
if(feature in values):
matrix[dataindex,idx] = 1
print dataindex,idx
v1 = matrix[0]
v2 = matrix[1]
# print v1.shape
diff = v2 - v1
dist = np.linalg.norm(diff)
print dist
我得到的 dist 值是 1.0
这是我使用 python 列表的代码:
matrix = []
for dataindex,item in enumerate(data):
if dataindex > 5:
f = open("Matrix.txt",'w')
f.write(str(matrix))
f.close()
break
print "Item" + str(dataindex)
row = []
specs = item['specs']
values = [value.lower() for value in specs.values()]
for idx,feature in enumerate(features):
if(feature in values):
print dataindex,idx
row.append(1)
else:
row.append(0)
matrix.append(row)
v1 = np.array(matrix[0]);
v2 = np.array(matrix[1]);
diff = v2 - v1
print diff
dist = np.linalg.norm(diff)
print dist
本例中 dist 的值为 4.35889894354
我已经检查了很多次,在这两种情况下,值 1 都设置在相同的位置,但答案不同。
可能是我没有正确使用 numpy 或者逻辑有问题。 我正在使用基于 numpy 零的矩阵,因为它的内存效率很高。
有什么问题?
【问题讨论】:
标签: python numpy matrix feature-extraction euclidean-distance