【发布时间】:2017-06-06 01:20:48
【问题描述】:
我正在尝试使用 numpy 对数组进行元素平方。我注意到一些值显示为负数。平方值不接近最大 int 限制。有谁知道为什么会发生这种情况以及我该如何解决?我宁愿避免使用 for 循环对数组元素进行平方,因为我的数据集非常大。
下面是正在发生的事情的一个例子:
import numpy as np
test = [1, 2, 47852]
sq = np.array(test)**2
print(sq)
print(47852*47852)
输出:
[1,4, -2005153392]
2289813904
【问题讨论】:
-
这很奇怪;当我输入代码时,我得到了正确的答案。您是否尝试过使用 numpy 的
square函数?sq = np.square(np.array(test))问题仍然存在吗? -
这种情况很少见,我没遇到过问题:[1 4 2289813904] 2289813904
-
更奇怪;这两种方法都适用于我的笔记本电脑,但两种方法在我的 Raspberry Pi 上都失败了(我得到的结果与你在 Pi 上的结果相同)。
-
你的电脑是什么架构的?,32位还是64位
-
@Mitch 下面的回答是正确的。奇怪的是,我的笔记本电脑(可以工作)和 Pi(不工作)都使用 64 位处理器;笔记本电脑是 x86,pi 使用 ARM Cortex-A53。我不会担心 64 位内核上的溢出错误——很高兴看到这篇文章。