如何修复np.prod()返回0?我知道它可以最大化,但它可以最小化吗



我使用numpy.prod()来乘以python3中列表中的所有数字。列表编号非常小(例如3.8226299694189604e-08),列表大约有550个元素长。当我尝试将它们相乘时,它会返回0。

y=[000006468213925471674、0.00031117360681864404、0.0001454104738910428、0.00030524638919489945、3.8226299694189604e-08、3.8226299 694189608e-08、0.00016952525710158057、3.822699 694189600e-08、3.8 22629969418 89604e-08、38.2262996941 89604e-07、1.61727034433345647e-05、3.822629 6941894604e-08 2.9787108915549283e-06、3.8226299694189604e-08、3.8226299 694189604-08、3.8226 29969418604e-08、3.8 226299694189604e-08,2.290387760571247e-05、3.822629.694189604E-08、3.822699.694189608e-08、38.22629969418 89604e-083.822629969194189604e-08.0.00045522525619576915、3.8226 299 6941894604e-0838.22629969141894604E-08、9.304076646489873e-05、3.8 083.8226299694189604e-08,3.8226299694189604e-08、3.822629969189604e-08、38.226299694189604e-080.0007210288342355448、0.0005366241795681486、3.8226299 694189604-08、3.8226 299694189604e-08、8.093595115310769e-05、3.8226 299 6941894604e-08 06,0.00140111932909478724、0.00017043312646063902、0.0001842940434681165、6.557209485476357e-05、2.481022813591621e-05、0.0006236676207450345、0.00013974006784962415、0.0008532874130044894、0.000139740 067849624150.00032145669406403673、0.0014401033223855751、0.0005881669010542191、0.00024152043690288857、0.000236890251741417、3.82262996941894604e-08、2.5928402823651683e-05、3.8226299 694189494604e-08,3.8226299694189604e-08、3.822629969189604e-08、1.835832306358118e-05、3.534960083809872e-05、2.199892303445638e-05、3.8226299 694189604-08、3.8226 2996941894604e-08,3.822629969 41894604e 08、3.82272996941896604e-08和3.822629969741894604e08、5.04116727503314e-05、3.8 226299694189604e-07、3.8226229694189494604e-07和3.8226299 694189604e-08,3.8226299694189604e-08、3.822629969189604e-08、38.22629969418 89604e-083.8226299698604e-08.322629969419604e-081.0582416277687164e-05、3.8226299 69418 89604 e-083.8226 2996941894604e-083.8 2262996941 89604e-08.0.00016322627635050667、7.607790595573319e-06、3.82267996941 89604 e-08、1.3472856807159536e-05、3.8 22629969194189604e-08-3.822629969 4189604e-08,3.8226299694189604e-08、3.822629969189604e-08、38.22629969418 89604e-083.8226299698604e-083.0963302752293576e-06、3.8226299 69418 89604 e-083.8226 2996941894604e-083.8 2262996941 89604e-08.3.822629969 41894604e 083.8226299 69141894604e083.822699 694189494604e-08 3.3570068163670261e-05、3.822629 6941894604 e-08、3.8 226299 6941896604e-08 1.5008468595624559e-06、38.226299 694189604e-08,3.8226299694189604e-08、3.822629969189604e-08、38.22629969418 89604e-083.8226299644189604e-0838.22629969141894604e-083.8 226299694189604e-08-3.822629964189604e-08.1.11276036919678e-05,2.485679401159341e-05、1.0582416277687164e-05、3.8226299694189604e-08、3.8226299 694189604-08、3.8226 29969418604e-08、3.8 226299694189604e-08和5.5912765360341004e-05、5.743644164498608e-06、3.82267996941894604e-08,3.822629969189604e-083.82262999441894604e083.8226299 694189604e-08,3.8226299694189604e-08、3.822629969189604e-08、4.432053850750466e-06、3.8226299 694189604-08、3.8226 2996941894604e-08,3.8226299 69189604E-08、3.822699 694189494604e-083.8226299 2996941896604e-0838.226299694189604e-083.8 2262996989604e-08.3.8226299694189604e-08,3.8226299694189604e-08、3.822629969189604e-08、38.22629969418 89604e-083.82262996989604e-086.179096379599487e-06、3.8226299 69418 89604 e-083.8226 29969418 94604e-085.2039424474584676e-06、38.226299 6941894604e-08 3.822629969 41894604e 083.8226299 694189604e-08,4.58897626328819e-06、7.68348623853211e-06、3.8226299694189604e-08、3.8226299 694189604-08、3.8226 29969418604e-08、3.8 226299694189604e-08和3.822629969189604e-083.822629969894604e-08.822629969418 89604e-08.8.801748140033776e-06、3.8 226299 69418 89604 e-08、38.2262996941 89604 e-083.8226 694189604e-08,3.8226299694189604e-08、3.822629969189604e-08、38.22629969418 89604e-083.8226299698604e-085.743644198608e-06、3.8226299 69418 89604 e-083.8226 2996941894604e-083.8 2262996941 89604e-08.3.822629

乘积=np.prod(y)

打印(相乘)

使用numpy的浮点数,无法获得一个小到无法准确存储的数字。因此它返回0,这是正确的。然而,根据你想做什么,可以使用一些技巧来处理这个极小的数字。你应该为你的问题增加更多的细节。

最新更新