- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 numpy 来执行总是很有趣的“计算邻接矩阵中的三角形”任务。 (Given an nxn Adjacency matrix, how can one compute the number of triangles in the graph (Matlab)?)
给定我的矩阵 A
, numpy.matmul()
计算 A
的立方没有问题,但是对于大矩阵numpy.trace()
返回负数。
我使用 numpy.diagonal()
提取了对角线并使用 math.sum()
对条目进行求和并且还使用 for 循环 - 两者都返回与 numpy.trace()
相同的负数.
尝试 math.fsum()
最后返回了(大概是正确的)数字 4,088,103,618——对于 python 和我的 64 位操作系统来说,这似乎是一个很小的数字,特别是因为 python 文档声称整数值是无限的。
这当然是溢出或未定义的行为问题,但是不一致从何而来?我已经在下面的帖子中进行了测试,成功验证了我的系统架构为 64 位,因此 numpy 也应该是 64 位包。 Do I have Numpy 32 bit or 64 bit?
为了可视化求和过程,将打印语句添加到 for 循环中,输出如下所示,并用星号标记感兴趣的行。
.
.
.
adding diag val 2013124 to the running total 2140898426 = 2142911550
adding diag val 2043358 to the running total 2142911550 = 2144954908
adding diag val 2035410 to the running total 2144954908 = 2146990318
adding diag val 2000416 to the running total 2146990318 = -2145976562 *
adding diag val 2062276 to the running total -2145976562 = -2143914286
adding diag val 2092890 to the running total -2143914286 = -2141821396
adding diag val 2092854 to the running total -2141821396 = -2139728542
.
.
.
为什么将 2000416 添加到 2146990318 会产生溢出?总和只有 2148990734——对于 python 来说这是一个非常小的数字!
最佳答案
Numpy 不使用“python 类型”,而是使用 underlying C types您必须指定满足您的需求的内容。默认情况下,整数数组将被赋予“int_”类型,来自文档:
int_ Default integer type (same as C long; normally either int64 or int32)
这就是为什么你会看到溢出。在构造数组时,您必须指定其他类型,这样它就不会溢出。
关于python - 正数之和得出负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43956551/
所以我目前正在代码 war 中解决以下问题: 返回一个数组,其中第一个元素是正数的计数,第二个元素是负数的总和。如果输入数组为空或 null,则返回一个空数组。 我想出了下面的代码,它并不漂亮,但我知
我想禁用文本框中的字母,这就是我使用此表达式的原因: /^[0-9]*$/ 问题是我也想允许负数, 这个表达式不允许我使用减号。(-)..我该怎么办? 最佳答案 尝试使用以下正则表达式: /^-?[0
这是一道面试题。我们有一个正整数数组,我们必须重新排列和连接数组元素,以便生成的数字是可以使用此数组形成的最大数字。 例如: [884 88] -> 88884 [20 19 90] -> 90201
所以我有点无奈。我想我了解如何对 IEEE-754 数字进行加法,但我在减法方面遇到了很大的问题。我感觉我的想法是对的,但我想和大家确认一下。 因此我们有以下两个 IEEE-754 编号: x: 0
我想将一个正数转换成相应的数字列表——数字也应该是整数。 转换时,比如1024,应该返回[1,0,2,4] 最佳答案 在 Swift 4.1 或更高版本中 let number = 1024 let
如果 float 可以用来正确表示我将使用的参数范围,我正在尝试为我的音频应用程序弄清楚。 它需要的“最大”掩码用于频率参数,它是正的,并且允许最多两位数字作为尾数(即从 20.00 hz 到 220
我是一名优秀的程序员,十分优秀!