Python 为什么np.array上的astype(uint)不';是否更改np数组元素的类型?
使用astype将np.array转换为uint8时,数组元素的类型不会改变Python 为什么np.array上的astype(uint)不';是否更改np数组元素的类型?,python,python-2.7,numpy,Python,Python 2.7,Numpy,使用astype将np.array转换为uint8时,数组元素的类型不会改变 >>> x = np.array([[1.0, 2.3], [1.3, 2.9]]) >>> x.astype(uint8) array([[1, 2], [1, 2]], dtype=uint8) >>> type(x[0,0]) <type 'numpy.float64'> >x=np.array([[1.0,2.3],[1.3,2
>>> x = np.array([[1.0, 2.3], [1.3, 2.9]])
>>> x.astype(uint8)
array([[1, 2],
[1, 2]], dtype=uint8)
>>> type(x[0,0])
<type 'numpy.float64'>
>x=np.array([[1.0,2.3],[1.3,2.9])
>>>x.aType(uint8)
数组([[1,2],
[1,2]],dtype=uint8)
>>>类型(x[0,0])
为什么元素仍然是float64而不是uint8?
astype
返回原始数组的副本
改为使用
x=x.astype(uint8)
astype返回数组的副本,因此必须为其分配:
x = x.astype(uint8)
作为一般规则:如果一个方法返回一些东西,那么它不会修改原始对象。如果它不返回某些内容,那么它会修改原始对象。对于内置对象、标准库和大多数其他库,这几乎总是正确的。在您的示例中,很明显,
astype
返回了一些内容。