python - python 中整数负幂的奇怪行为

标签 python python-3.x numpy

当我使用 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


编辑:找到了支持我的观点的答案;投票给重复的:

Why can't I raise to a negative power in numpy?

关于python - python 中整数负幂的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76387474/

相关文章:

Python:使动态创建的类(如在类本身中)可迭代?

python - FastQ编程错误

Python 整个反向列表指定索引

python - 在Python中迭代二维数组?

arrays - 在numpy中获取3D数组的2D切片的平均值

python - NumPy 更改特定行中符合条件的元素

python - "import requests"- "No module named requests"时出错

python - 将列表转换为字典列表

python - Elasticsearch - 检查索引是否存在时的身份验证错误

python - 以向量化方式计算数组切片上的函数