我有一个包含n个元素的列表,我需要知道它们之间的乘积,所以:[x1,x2,x3,...],我需要x1* x2 * x3 ...
所以我尝试了numpy funcion prod如下:
np.array([20, 19, 18, 17, 16, 15, 14]).prod()
字符串
这很正常,就像它应该的那样但是,当我将元素13添加到列表中时,代码返回错误的答案。下面的代码给出了784,143,104的答案
np.array([20, 19, 18, 17, 16, 15, 14, 13]).prod()
型
,而这给出了正确答案,即5,079,110,400
20 * 19 * 18 * 17 * 16 * 15 * 14 * 13
型
奇怪的是,当我去掉第13号元素时,两者都给予了相同的正确答案,即390,700,800。我做错什么了?
2条答案
按热度按时间wixjitnu1#
由于整数溢出。列表元素相乘的结果超过了所使用的数据类型可以表示的最大值。
要解决这个问题,可以考虑使用可以处理较大数字的数据类型,如
numpy.int64
字符串
evrscar22#
默认情况下,NumPy根据提供的元素确定数据类型。在您的示例中,列表的元素是整数,当您添加数字13时,数据类型将更改为int64,该类型的存储容量有限
字符串