rob*_*ntw 45 python numpy scipy
我有一个ndarray与在蟒蛇dtype的float64.我想将数组转换为整数数组.我该怎么做?
int()将无法正常工作,因为它说它无法将其转换为标量.dtype显然改变字段本身不起作用,因为实际字节没有改变.我似乎无法在Google或文档中找到任何内容 - 最好的方法是什么?
ken*_*ytm 64
使用.astype.
>>> a = numpy.array([1, 2, 3, 4], dtype=numpy.float64)
>>> a
array([ 1., 2., 3., 4.])
>>> a.astype(numpy.int64)
array([1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
有关更多选项,请参阅文档.
虽然astype可能是"最佳"选项,但还有其他几种方法可将其转换为整数数组.我arr在以下示例中使用它:
>>> import numpy as np
>>> arr = np.array([1,2,3,4], dtype=float)
>>> arr
array([ 1., 2., 3., 4.])
Run Code Online (Sandbox Code Playgroud)
int*NumPy 的功能>>> np.int64(arr)
array([1, 2, 3, 4])
>>> np.int_(arr)
array([1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
*array本身就起了作用:>>> np.array(arr, dtype=int)
array([1, 2, 3, 4])
>>> np.asarray(arr, dtype=int)
array([1, 2, 3, 4])
>>> np.asanyarray(arr, dtype=int)
array([1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
astype方法(即已经提及,但为了完整起见):>>> arr.astype(int)
array([1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
请注意,将intdtype 传递给astype或array将默认为依赖于您的平台的默认整数类型.例如在Windows上,它将是int3264位Linux上的64位Python int64.如果您需要特定的整数类型并且想要避免平台"歧义",您应该使用相应的NumPy类型,如np.int32或np.int64.