User np.argwhere()与np.where()
时间: 2023-11-23 17:57:44 浏览: 39
`np.argwhere()`和`np.where()`都是NumPy库中的函数,用于在数组中查找满足条件的元素的索引。
`np.where()`函数返回满足条件的元素的索引,而`np.argwhere()`函数返回满足条件的元素的坐标,即每个元素的索引值组成的元组。
以下是两个函数的使用示例:
```python
import numpy as np
# 创建一个二维数组
arr = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
# 使用np.where()函数查找数组中大于3的元素的索引
indices = np.where(arr > 3)
print(indices) # 输出:(array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2]))
# 使用np.argwhere()函数查找数组中大于3的元素的坐标
coordinates = np.argwhere(arr > 3)
print(coordinates) # 输出:[[1 1][1 2][2 0][2 1][2 2]]
```
相关问题
np.where用法举例
np.where是NumPy库中的一个函数,用于根据给定的条件返回符合条件的元素的索引或值。它的用法如下:
1. 返回符合条件的元素的索引:
```python
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
indices = np.where(arr > 3)
print(indices)
```
输出:
```
(array([3, 4]),)
```
这的条件是arr 3,np.where返回了满足条件的元素的索,即3和4。
2. 返回符合条件的元素值:
```python
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
values = np.where(arr > 3, arr, 0)
print(values)
```
输出:
```
[0 0 0 4 5]
```
这里的条件是arr > 3,np.where返回了满足条件的元素的值,不满足条件的元素用0代替。
3. 多个条件的使用:
```python
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
values = np.where((arr > 2) & (arr < 5), arr, -1)
print(values)
```
输出:
```
[-1 -1 3 4 -1]
```
这里的条件是arr > 2和arr < 5,np.where返回了同时满足两个条件的元素的值,不满足条件的元素用-1代替。
import numpy as np # 构建用户-物品评分矩阵 user_item_matrix = np.array([ [3.5, 4.5, 0, 0], [0, 0, 3.5, 4.5], [4.0, 3.5, 4.0, 0] ]) # 计算用户之间的相似度矩阵(余弦相似度) user_sim_matrix = np.zeros((user_item_matrix.shape[0], user_item_matrix.shape[0])) for i in range(user_item_matrix.shape[0]): for j in range(user_item_matrix.shape[0]): if i == j: continue user_sim_matrix[i][j] = np.dot(user_item_matrix[i], user_item_matrix[j]) / ( np.linalg.norm(user_item_matrix[i]) * np.linalg.norm(user_item_matrix[j])) # 对于每个用户,计算推荐列表 for i in range(user_item_matrix.shape[0]): rated_items = np.where(user_item_matrix[i] > 0)[0] # 已评分或观看的物品 unrated_items = np.where(user_item_matrix[i] == 0)[0] # 未评分或观看的物品 scores = np.dot(user_sim_matrix[i], user_item_matrix) / np.sum(user_sim_matrix[i]) # 计算推荐分数 rec_items = unrated_items[np.argsort(scores[unrated_items])[::-1]] # 按推荐分数排序 print(f"为用户{i}推荐的电影是:{rec_items[:2]}").这段代码每一行的解释,给出每一行的解释,说明为什么?
第一行:导入numpy库,命名为np。
第二行:创建一个3x4的用户-物品评分矩阵,每行代表一个用户,每列代表一个物品,矩阵中的数值表示该用户对该物品的评分,0表示未评分或未观看。
第五行:创建一个与用户数相同的全0方阵,用于存储用户之间的相似度矩阵。
第六至九行:对于每一对不同的用户,计算它们之间的余弦相似度,并存储在相似度矩阵中。
第十二至二十二行:对于每个用户,找出他们已评分或观看过的物品和未评分或未观看的物品;然后,计算该用户与其他所有用户的相似度加权评分(即推荐分数),并按照推荐分数从高到低排序;最后,输出每个用户的前两个推荐物品。
注:np.dot()表示矩阵乘法,np.linalg.norm()表示求矩阵或向量的范数。