我想为最小查找算法覆盖一些数组值。对于这些示例,我希望将第一行的值替换为math.inf
.
它在 example 中工作正常c
,但我不明白a
and 中发生了什么b
:
import numpy as np
import math
a = np.repeat(0, 9).reshape((3, 3))
a[0, :] = np.ones((3,)) * math.inf
print(a)
b = np.arange(9).reshape((3, 3))
b[0, :] = np.ones((3,)) * math.inf
print(b)
c = np.empty((3, 3))
c[0, :] = np.ones((3,)) * math.inf
print(c)
Run Code Online (Sandbox Code Playgroud)
输出:将无穷大显示为 example 中的行条目c
,但-9223372036854775808
在 examplea
和 中b
。
为什么覆盖现有输出时会产生影响?
repeat
和 的整数文字参数arange
导致返回的数组具有整数类型。没有empty
类似的文字参数,dtype
而是有一个参数,默认为float
类型。
请参阅以下0.0
内容9.0
:
import numpy as np
import math
a = np.repeat(0.0, 9).reshape((3, 3))
a[0, :] = np.ones((3,)) * math.inf
print(a)
b = np.arange(9.0).reshape((3, 3))
b[0, :] = np.ones((3,)) * math.inf
print(b)
Run Code Online (Sandbox Code Playgroud)
[[inf inf inf]
[ 0. 0. 0.]
[ 0. 0. 0.]]
[[inf inf inf]
[ 3. 4. 5.]
[ 6. 7. 8.]]
Run Code Online (Sandbox Code Playgroud)
至于为什么-9223372036854775808
:
to转换使用cvttsd2sifloat
指令,该指令返回 1 后跟 63 个零来表示错误:integer
如果转换结果超出有符号四字整数的范围限制(在 64 位模式下且 REX.W/VEX.W/EVEX.W = 1),则会引发浮点无效异常,并且如果此异常被屏蔽,返回不定整数值 (80000000_00000000H)。
如果将其解释为 2 的补码整数,则对应于-2^63 = -9223372036854775808
。
归档时间: |
|
查看次数: |
132 次 |
最近记录: |