纽比·艾因森行为恶劣。注意什么?

2024-05-16 04:24:05 发布

您现在位置:Python中文网/ 问答频道 /正文

当numpy einsum抛出错误时,通常失败的是什么:

Traceback (most recent call last):
  File "rmse_iter.py", line 30, in <module>
    rmse_out = np.sqrt(np.einsum('ij,ij->i',diffs,diffs)/3.0)
TypeError: invalid data type for einsum

numpy数组diff是由两个pandas数据帧的减法生成的,只包含np.float32类型的数字——没有字符串、nan、+/-inf或任何其他有趣的业务。那么我应该找什么呢?在什么情况下,einsum通常会以这种方式失败?在

以下是我加载和处理数据帧的方式:

^{pr2}$

请原谅这个问题过于开放。感谢Divakar向我介绍了einsum巫术。在

编辑:

以下是我尝试以表格形式包含实际数据:

        rna     cnv     1_a     2_a     3_a     4_a     5_a     6_a     7_a     8_a     9_a     10_a    11_a    12_a    13_a    14_a    15_a    16_a    17_a    18_a    19_a    20_a    21_a    22_a    23_a    24_a    25_a    1_b     2_b     3_b     4_b     5_b     6_b     7_b     8_b     9_b     10_b    11_b    12_b    13_b    14_b    15_b    16_b    17_b    18_b    19_b    20_b    21_b    22_b    23_b    24_b    25_b
5641095 AP1G1   CCL8    3.588543653488159       10.119391441345215      32.92853546142578       6.307891368865967       -32.6164665222168       -34.94172286987305      -4.913632869720459
      -0.1798282265663147     -0.5144565105438232     12.70481014251709       -37.560791015625        39.83904266357422       32.92853546142578       -0.9303828477859497     -32.6164665222168       -8.661237716674805      31.074113845825195      -0.1798282265663147     -0.5144565105438232     -4.566867828369141      -2.5914463996887207     10.119391441345215      -12.007019996643066     6.307891368865967       -21.65423583984375      -8.217794418334961      2.9316258430480957      27.942243576049805      11.107816696166992      -7.4105706214904785     -1.1366562843322754     17.06450653076172       -7.277851581573486      7.186253547668457       -37.862789154052734     2.21020770072937        -14.829334259033203     5.599830627441406       27.80745506286621       -5.512645244598389      -1.1366562843322754     17.06450653076172       -20.73367691040039      -8.826581001281738      -10.555018424987793     -8.217794418334961
      -6.360044956207275      -1.9607794284820557     6.345422267913818       13.062686920166016
5641105 AP1G1   CCND2   2.3494300842285156      10.119391441345215      27.10674476623535       3.8083128929138184      -70.73456573486328      -39.372581481933594     -8.208958625793457
      -0.1798282265663147     1.082576036453247       12.70481014251709       -63.872154235839844     39.83904266357422       27.10674476623535       0.01608092524111271     -70.73456573486328      -8.661237716674805      43.937278747558594      -0.1798282265663147     1.082576036453247       -3.672504425048828      -3.3072872161865234     10.119391441345215      -8.377813339233398      3.8083128929138184      -26.24537467956543      -10.137262344360352     2.9316258430480957      15.313714027404785      7.0047502517700195      -12.949808120727539     -2.3481321334838867     12.740055084228516      -3.4322025775909424     8.920576095581055       -62.727718353271484     0.2877853512763977      -19.20431137084961      11.22409725189209       27.80745506286621       -1.9983365535736084     -2.3481321334838867     12.740055084228516      -33.702674865722656     -8.826581001281738      -18.610857009887695     -10.137262344360352
     -6.804142475128174      -0.43901631236076355    18.789241790771484      15.554900169372559
5641113 AP1G1   CCNH    4.718714237213135       1230632818573312.0      27.10674476623535       4.7800703048706055      -70.73456573486328      -47.087345123291016     -6.196646690368652
      -1.9009416103363037     474487485104128.0       25.461158752441406      -90.02267456054688      39.83904266357422       27.10674476623535       0.7240228652954102      -70.73456573486328      -14.690686225891113     53.84657669067383       -1.9009416103363037     474487485104128.0       -4.566867828369141      -555133515595776.0      1230632818573312.0      -328591573254144.0      4.7800703048706055      -1088045541490688.0     -10.137262344360352     2.9316258430480957      19.262754440307617      11.107816696166992      -12.949808120727539     -2.3481321334838867     17.06450653076172       -7.277851581573486      17.50507164001465       -45.33726501464844      0.9687032103538513      -33.4061164855957       8564995327524864.0      38.147640228271484      -3.5528361797332764     -2.3481321334838867     17.06450653076172       -33.702674865722656     -8.826581001281738      -27.176956176757812     -10.137262344360352
     -6.431360721588135      -0.43901631236076355    3244183414374400.0      15.554900169372559

Tags: 数据numpymost错误np方式calllast
1条回答
网友
1楼 · 发布于 2024-05-16 04:24:05

结果是从df中提取值数据框值不允许将字符串混合到np.nan公司,很明显是在我最初的df里。这就是为什么我尝试对从中创建的数组进行类型转换,然后将所有这些值切片数据框值失败的项目只是停留在“对象”。在

为了解决这个问题,我只需从原始数据框中选择数字列并将它们发送到矩阵中:

a= df[df.columns[2:]].as_matrix()

然后,我确保在diff操作中更新索引,因为列索引向后移动了两个:

^{pr2}$

要点:当einsum表现糟糕时,在数组中查找不是float32或float64的字符串或“对象”。在

相关问题 更多 >