优化这段代码 user_index = {u: i for i, u in enumerate(users)} print("user_index:",user_index) product_index = {p: i for i, p in enumerate(products)} print("product_index:",product_index) # 构建全零矩阵 np.zeros matrix = np.zeros((len(users), len(products))) # 将存在关系的节点在矩阵中用值1表示 quantity = 1 for user_id, product_id, quantity in data: matrix[user_index[user_id], product_index[product_id]] = quantity 打印出矩阵matrix 的行列对应的名称
时间: 2024-03-26 08:39:26 浏览: 80
可以将上述代码优化如下:
```python
user_index = {}
product_index = {}
for i, (user_id, product_id, _) in enumerate(data):
if user_id not in user_index:
user_index[user_id] = len(user_index)
if product_id not in product_index:
product_index[product_id] = len(product_index)
print("user_index:", user_index)
print("product_index:", product_index)
# 构建全零矩阵 np.zeros
matrix = np.zeros((len(user_index), len(product_index)))
# 将存在关系的节点在矩阵中用值1表示 quantity = 1
for user_id, product_id, quantity in data:
matrix[user_index[user_id], product_index[product_id]] = quantity
# 打印出矩阵matrix 的行列对应的名称
user_names = list(user_index.keys())
product_names = list(product_index.keys())
print("user_names:", user_names)
print("product_names:", product_names)
```
这样,我们将原本使用字典推导式的代码改为了普通的 for 循环,使得代码更易读、易懂,同时也提高了代码的性能。在构建矩阵后,我们可以利用字典的 keys() 方法获取行列对应的名称。
阅读全文