gpt4 book ai didi

python - 从一开始就使用一元/二进制数据创建 csr_matrix

转载 作者:行者123 更新时间:2023-12-01 07:36:58 24 4
gpt4 key购买 nike

我从 pandas Dataframe 中的 SQL 导入二进制数据,该数据框由 UserIdItemId 列组成。我正在使用隐式/二进制数据,正如您在下面的pivot_table 中看到的那样。

Dummy data

frame=pd.DataFrame()
frame['Id']=[2134, 23454, 5654, 68768]
frame['ItemId']=[123, 456, 789, 101]

我知道如何在 Pandas 中创建 pivot_table 使用:

print(frame.groupby(['Id', 'ItemId'], sort=False).size().unstack(fill_value=0))

ItemId 123 456 789 101
Id
2134 1 0 0 0
23454 0 1 0 0
5654 0 0 1 0
68768 0 0 0 1

并将其转换为 SciPy csr_matrix,但我想从一开始就创建一个稀疏矩阵,而不必从 Pandas df 进行转换。原因是我收到错误:Unstacked DataFrame 太大,导致 int32 溢出,因为我的原始数据由 378.777 行组成。

非常感谢任何帮助!

我正在尝试做与这些答案相同的事情 Efficiently create sparse pivot tables in pandas?

但我还没有 frame['count'] 数据。

最佳答案

使用 4th option 实例化矩阵:

Id = [2134, 23454, 5654, 68768]
ItemId = [123, 456, 789, 101]

csrm = csr_matrix(([1]*len(Id), (Id,ItemId)))

结果:

<68769x790 sparse matrix of type '<class 'numpy.int32'>'
with 4 stored elements in Compressed Sparse Row format>

关于python - 从一开始就使用一元/二进制数据创建 csr_matrix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56951260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com