【发布时间】:2017-12-18 05:07:54
【问题描述】:
我有一个像这样的二维 numpy 数组,
[[3, 4, 5, 6], [4, 5, 6, 7], [9, 10, 3, 5]]
我使用以下代码将其转换为 COO 矩阵:
# Flatten 2D array
data = np.asarray(twod_array).flatten()
row = np.arange(0, len(data))
col = np.arange(0, len(row))
# Make COO matrix
mat = coo_matrix((data, (row, col)), shape=(len(row), len(row)))
这是将 2D numpy 数组转换为 COO 矩阵的正确方法吗?
编辑
我想要做的是,我在一个列上有零件,在另一列上有项目。
parts item
processor, display, sensor temp. monitoring system
fan baldes, motor, sensor motion detecting fan
. .
. .
我已将上述数据转换为数字,以便进一步处理。
parts items
1, 2, 3 1
4, 5, 3 2
所以现在,我想将上述数据输入 LightFM,所以我创建了一个像这样的 2D 数组。
[[1, 2, 3, 1], [4, 5, 3, 2]]
但是由于 LightFM 的 fit 方法只接受形状为 [n_users, n_items] 的 np.float32 coo_matrix,它是一个包含用户-项目交互的矩阵。我使用上述方法转换了二维数组。
【问题讨论】:
-
为什么你觉得这不正确?这会导致错误吗?
-
@cᴏʟᴅsᴘᴇᴇᴅ 没有错误。我正在用它来训练一个 LightFM 模型,模型生成的建议很奇怪。
-
可以使用
mat.A查看。您的预期输出是什么? -
我有一种感觉,你正在跳入 LightFM,却不了解它的预期,甚至不了解稀疏矩阵是什么。在您之前的问题中,您尝试从字典中制作一个 6d 稀疏矩阵。
-
@hpaulj 是的,你是对的,但是当我检查 LightFM 的文档时,它只说它需要一个稀疏矩阵作为 fit 方法的参数。我是新手,请原谅我
标签: python arrays numpy matrix