我想使用存储在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"不是一个好主意,我应该使用向量函数来做这件事,但我找不到一种方法来实现这一点.有什么主意吗?

推荐答案

也许它会更快地奏效:

Y[ratings["movieIndex"].values, ratings["userIndex"].values] = ratings["rating"].values

Python相关问答推荐

如何在msgraph.GraphServiceClient上进行身份验证?

无法使用requests或Selenium抓取一个href链接

Python+线程\TrocessPoolExecutor

Asyncio:如何从子进程中读取stdout?

改进大型数据集的框架性能

合并帧,但不按合并键排序

在matplotlib中删除子图之间的间隙_mosaic

Python全局变量递归得到不同的结果

pandas:对多级列框架的列进行排序/重新排序

如何在BeautifulSoup/CSS Select 器中处理regex?

Pandas:填充行并删除重复项,但保留不同的值

如何重新组织我的Pandas DataFrame,使列名成为列值?

如何获取包含`try`外部堆栈的`__traceback__`属性的异常

如何在SQLAlchemy + Alembic中定义一个"Index()",在基表中的列上

Regex用于匹配Python中逗号分隔的AWS区域

如何从数据框列中提取特定部分并将该值填充到其他列中?

随机森林n_估计器的计算

如何从一个维基页面中抓取和存储多个表格?

利用广播使减法更有效率

如何在Django查询集中生成带有值列表的带注释的字段?