如何将二维浮点numpy数组转换为二维int numpy数组?

如何将真正的numpy数组转换为int numpy数组? 试图直接使用地图数组,但它没有工作。

使用astype方法。

 >>> x = np.array([[1.0, 2.3], [1.3, 2.9]]) >>> x array([[ 1. , 2.3], [ 1.3, 2.9]]) >>> x.astype(int) array([[1, 2], [1, 2]]) 

如何控制四舍五入的一些numpy函数: rint , floor , trunc , ceil 。 取决于你希望如何绕浮点数,向上,向下或到最近的整数。

 >>> x = np.array([[1.0,2.3],[1.3,2.9]]) >>> x array([[ 1. , 2.3], [ 1.3, 2.9]]) >>> y = np.trunc(x) >>> y array([[ 1., 2.], [ 1., 2.]]) >>> z = np.ceil(x) >>> z array([[ 1., 3.], [ 2., 3.]]) >>> t = np.floor(x) >>> t array([[ 1., 2.], [ 1., 2.]]) >>> a = np.rint(x) >>> a array([[ 1., 2.], [ 1., 3.]]) 

为了使其中一个int,或其他types的numpy, astype (由BrenBern回答):

 a.astype(int) array([[1, 2], [1, 3]]) >>> y.astype(int) array([[1, 2], [1, 2]]) 

你可以使用np.int_

 >>> x = np.array([[1.0, 2.3], [1.3, 2.9]]) >>> x array([[ 1. , 2.3], [ 1.3, 2.9]]) >>> np.int_(x) array([[1, 2], [1, 2]]) 

如果你不确定你的input是否是一个Numpy数组,你可以用asarray dtype=int而不是astype来使用astype

 >>> np.asarray([1,2,3,4], dtype=int) array([1, 2, 3, 4]) 

如果input数组已经有了正确的asarrayasarray避免了数组拷贝而astype不(除非你指定copy=False ):

 >>> a = np.array([1,2,3,4]) >>> a is np.asarray(a) # no copy :) True >>> a is a.astype(int) # copy :( False >>> a is a.astype(int, copy=False) # no copy :) True