当我使用 np.array
将整数求负数时,我观察到这种奇怪的行为。具体来说,我正在做
import numpy as np
a = 10**(np.arange(-1, -8, -1))
这会导致以下错误。
ValueError: Integers to negative integer powers are not allowed.
这很奇怪,因为代码 10**(-1)
工作正常。但是,以下解决方法(其中 10
是 float 而不是整数)可以正常工作。
import numpy as np
a = 10.**(np.arange(-1, -8, -1)
print(a) # Prints array([1.e-01, 1.e-02, 1.e-03, 1.e-04, 1.e-05, 1.e-06, 1.e-07])
为什么它对整数无效?任何解释表示赞赏。
最佳答案
发生这种情况是因为输入 10 是一个整数。
10**(np.arange(-1, -8, -1))
numpy.arange()
的设计方式必须给出 10**(np.arange(-1, -8, -1))
整数或什么都没有,因为输入是整数。
恰恰相反;
a = 10.**(np.arange(-1, -8, -1)
给出了愉快的结果,因为10.0
是一个float
编辑:找到了支持我的观点的答案;投票给重复的:
关于python - python 中整数负幂的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76387474/