Python Numpy:如何添加两个从不同类型转换的np?

Python Numpy:如何添加两个从不同类型转换的np?,python,arrays,numpy,Python,Arrays,Numpy,我有两个不同类型的数组 >>> type(pred) <type 'numpy.ndarray'> >>> type(label1) <type 'tuple'> 这很奇怪,不是吗?你的问题是,尽管nl和npred是numpy.ndarray对象,但它们可以包含异构数据。见文件: numpy数组是同构的,包含由dtype对象描述的元素。数据类型对象可以由基本数字类型的不同组合构成 因此,如果n1是字符串数组,而npred是int数组,

我有两个不同类型的数组

>>> type(pred)
<type 'numpy.ndarray'>
>>> type(label1)
<type 'tuple'>

这很奇怪,不是吗?

你的问题是,尽管
nl
npred
numpy.ndarray
对象,但它们可以包含异构数据。见文件:

numpy数组是同构的,包含由dtype对象描述的元素。数据类型对象可以由基本数字类型的不同组合构成

因此,如果
n1
是字符串数组,而
npred
是int数组,则无法执行添加操作:

>>> import numpy as np
>>> a = np.array(['a', 'b', 'c'])
>>> b = np.array([1, 2, 3])
>>> type(a), type(b)
 (numpy.ndarray, numpy.ndarray)
>>> a + b
 unsupported operand type(s) for +: 'numpy.ndarray' and 'numpy.ndarray
如果要了解阵列的内容类型,请执行以下操作:

>>> a.dtype, b.dtype
 (dtype('S1'), dtype('int64'))

因此,您必须知道每个数组包含的数据类型。这不是尺寸问题。

确切地说,什么是
pred.shape
pred.dtype
,以及
nl.dtype
。它是这样固定的:
npred=np.float32(pred)
nl=np.float32(label1)
然后,您将两个数组强制转换为相同的类型,因此在此之前它们具有不同的数据类型。是的。这就是重点。我想np会在浮动和双浮动之间进行铸造。实际上
dtype(nl)='S5'
dtype(npred)='float64'
@soleschong-它将在数字类型(例如,浮点和双精度,或整数和浮点等)之间转换。元组
不是数字类型。如果不使用numpy而只执行
1-(2,3)
,则会得到相同的错误。问题的根源在于
tuple
s没有
\uuuuu\uuuu
方法。不完全是这样。我把np.array(元组)减去为np.array(数组)
>>> import numpy as np
>>> a = np.array(['a', 'b', 'c'])
>>> b = np.array([1, 2, 3])
>>> type(a), type(b)
 (numpy.ndarray, numpy.ndarray)
>>> a + b
 unsupported operand type(s) for +: 'numpy.ndarray' and 'numpy.ndarray
>>> a.dtype, b.dtype
 (dtype('S1'), dtype('int64'))