gpt4 book ai didi

python - * : 'numpy.ndarray' and 'numpy.float64' 不支持的操作数类型

转载 作者:太空狗 更新时间:2023-10-29 21:01:26 27 4
gpt4 key购买 nike

长期阅读,第一次写作。

我在 google 和 stack overflow 上四处搜索,但并没有真正找到这个问题的一般答案。

我在使用 numpy 1.6.2 的 python 2.7.3 中收到“* 不受支持的操作数类型:‘numpy.ndarray’和‘numpy.float64’”错误。

错误来自于将 numpy 数组和 numpy float 相乘,但并非每次都会发生。

例如:

x = np.tan(1) # numpy.float64
y = np.array([0,1,2,3]) # numpy.ndarray
np.multiply(x,y) # works no problem

或者

x = np.tan(np.abs(np.multiply(-31,41)))  # numpy.float64
y = np.square(np.add(np.divide(np.zeros(100),42),(-27)**40)) # numpy.ndarray
np.multiply(x,y) # works no problem

两者都有效

现在是问题 child :

np.multiply(np.square(np.add(np.divide(np.zeros(100),42),-27)**40)),
np.tan(np.abs(np.multiply(-31,41))))

或者,x 定义如上:

np.multiply(np.square(np.add(np.divide(np.zeros(100),42),(-27)**40)),x)

两者都产生错误:NotImplemented

我知道随机函数和数字看起来很奇怪,但从概念上讲这仍然应该有效,因为当它们分别设置为变量时它有效。

为什么会这样?我该如何在一般意义上修复它?

非常感谢!杰森

最佳答案

我怀疑这里的问题是 NumPy 无法在其数组中存储 Python long 值。一旦您尝试这样做,它就会将数组的数据类型切换为 object。然后对数组的算术运算变得更加棘手,因为 NumPy 不能再自己进行算术运算。

>>> np.array(27**40)
array(1797010299914431210413179829509605039731475627537851106401L, dtype=object)
>>> np.array(27**40) * np.tan(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for *: 'numpy.ndarray' and 'numpy.float64'

奇怪的是,交换参数的顺序有时会起作用:

>>> np.tan(1) * np.array(27**40)
2.7986777223711575e+57

在第二种情况下,结果的类型是 Python float,而不是 NumPy 数组。

解决方法是避免在 NumPy 数组中创建 long 值,而是使用 float:

>>> np.array(27.0**40)
array(1.797010299914431e+57)
>>> np.array(27.0**40) * np.tan(1)
2.7986777223711575e+57
>>> np.multiply(np.square(np.add(np.divide(np.zeros(10),42),(-27.0)**40)),np.tan(1))
array([ 5.02925269e+114, 5.02925269e+114, 5.02925269e+114,
5.02925269e+114, 5.02925269e+114, 5.02925269e+114,
5.02925269e+114, 5.02925269e+114, 5.02925269e+114,
5.02925269e+114])

如果您确实收到类似 this is the future 的错误,首先要做的是检查要相乘的数组的 dtype。它是否包含 NumPy 值或 Python 对象?

关于python - * : 'numpy.ndarray' and 'numpy.float64' 不支持的操作数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com