如何将真正的numpy数组转换为int numpy数组?尝试直接使用map到数组,但它不起作用 .
使用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 . 取决于你希望如何绕上浮子,向上,向下或最近的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]])
你可以使用 np.int_ :
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]])
如果您不确定您的输入是否为Numpy数组,则可以使用 asarray 与 dtype=int 而不是 astype :
asarray
dtype=int
astype
>>> np.asarray([1,2,3,4], dtype=int) array([1, 2, 3, 4])
如果输入数组已经具有正确的dtype, asarray 避免了数组副本,而 astype 则没有(除非您指定 copy=False ):
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
4 回答
使用astype方法 .
一些关于如何控制舍入的numpy函数:rint,floor,trunc,ceil . 取决于你希望如何绕上浮子,向上,向下或最近的int .
要使其中的一个进入int,或者numpy中的其他类型之一,astype(由BrenBern回答):
你可以使用
np.int_
:如果您不确定您的输入是否为Numpy数组,则可以使用
asarray
与dtype=int
而不是astype
:如果输入数组已经具有正确的dtype,
asarray
避免了数组副本,而astype
则没有(除非您指定copy=False
):