大量产品

问题描述 投票:0回答:1

我有两组数字:

  1. 一个是2的幂(1、2、4等)的“列表”(元组也起作用),我将其称为Mult_array。我可以成功定义为例如,长度为1485,我可以检查这些值,因此该代码正在工作。我尝试过与他们进行各种合作格式。我可以总结这些“列表”中的所有值,并查看结果。
  2. 第二个可以用很多方式组成,但是现在,它是数据帧中的一行(该数据帧由1485列组成,假设696行(具体来说)。值全为0/1)。 >
  3. 我想计算MultArray与数据框的点积,并将结果存储在数据框的新列中。

mult_array2= [1 << i for i in range(BigCourseDF.shape[1])]
BigCourseDF["sortkey"]=BigCourseDF.dot(mult_array2)

[range(BigCourseDF.shape[1])较小(例如45)时,此代码将按预期工作。但是,在mult_array2长度为1485的情况下,第二行将导致类似OverflowError:int太大而无法转换的错误。这令人沮丧,因为结果值应小于mult_array2值的总和(如果整个数据帧的值都为1,则结果将是此值)。

感谢您的帮助,如果需要,我可以提供更多背景信息。

更新:csv file of BigCourseDF here

我有两组数字:一个是2的幂(1、2、4等)的“列表”(元组也起作用),我将其称为Mult_array。我可以成功地将其定义为长度为1485,例如,I ...

python pandas dot largenumber
1个回答
1
投票

[我怀疑您的BigCourseDF行(带有1和0的行)的数据类型为np.float64。如果使用python int(无限制位数)数组进行矩阵乘法,则ints将转换为64位浮点数,这将在2 ** 1024左右产生问题:

© www.soinside.com 2019 - 2024. All rights reserved.