首页 文章

如何将2D float numpy数组转换为2D int numpy数组?

提问于
浏览
212

如何将真正的numpy数组转换为int numpy数组?尝试直接使用map到数组,但它不起作用 .

4 回答

  • 9

    使用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]])
    
  • 53

    一些关于如何控制舍入的numpy函数:rintfloortruncceil . 取决于你希望如何绕上浮子,向上,向下或最近的int .

    >>> 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,或者numpy中的其他类型之一,astype(由BrenBern回答):

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

    你可以使用 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]])
    
  • 9

    如果您不确定您的输入是否为Numpy数组,则可以使用 asarraydtype=int 而不是 astype

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

    如果输入数组已经具有正确的dtype, asarray 避免了数组副本,而 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
    

相关问题