我想使用存储在PANAS数据集中的索引和值创建一个稀疏的Numy数组
数据集有‘userIndex’、‘movieIndex’和‘Rating’,有一百万行
例如:
-- | movieIndex | userIndex | rating |
---|---|---|---|
0 | 0 | 4 | 2.5 |
1 | 2 | 2 | 3.0 |
2 | 1 | 1 | 4.0 |
3 | 2 | 0 | 4.0 |
4 | 4 | 2 | 3.0 |
将被转换为如下所示的稀疏数组:
[[0 0 0 2.5],
[0 4.0 0 0 0],
[4.0 0 3.0 0 0],
[0 0 0],
[0 0 3.0 0 0]]
因此,首先我要创建一个大小正确的np.zeros数组:
Y = np.zeros([nm,nu])
目前,我将信息传递为:
for i in range(len(ratings)):
Y[int(ratings.iloc[i].movieIndex),int(ratings.iloc[i].userIndex)]
= ratings.iloc[i].rating
它对O(N)很好,所以不是很差,但需要3分钟才能做到. 我知道在数据集中使用"for"不是一个好主意,我应该使用向量函数来做这件事,但我找不到一种方法来实现这一点.有什么主意吗?