Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将二维浮点numpy数组转换为二维整数numpy数组?_Python_Numpy - Fatal编程技术网

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

Python 如何将二维浮点numpy数组转换为二维整数numpy数组?,python,numpy,Python,Numpy,如何将实numpy数组转换为int numpy数组? 尝试直接使用映射到数组,但无效。使用该方法 有关如何控制舍入的一些numpy函数:。取决于您希望如何对浮动进行四舍五入,向上、向下或最接近的整数 >>> 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

如何将实numpy数组转换为int numpy数组? 尝试直接使用映射到数组,但无效。

使用该方法


有关如何控制舍入的一些numpy函数:。取决于您希望如何对浮动进行四舍五入,向上、向下或最接近的整数

>>> 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中转换为其他类型(由BrenBern回答):


您可以使用
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

>>> np.asarray([1,2,3,4], dtype=int)
array([1, 2, 3, 4])
如果输入数组已经具有正确的数据类型,
asarray
会避免数组复制,而
astype
不会(除非指定
copy=False
):


正是我想要的<代码>aType通常过于泛型,我认为它在进行intx-inty转换时可能更有用。当我想进行浮点-整数转换时,能够选择舍入的类型是一个很好的特性。因此,安全地将几乎像
7.99999
这样的整数转换为像
8
这样的整数的最简单的方法是
np.rint(arr)。astype(int)
?numpy中任何使其成为uint8的方法?@Ryan
astype(np.uint8)
只要确保数组中没有
np.inf
np.nan
,因为它们有令人惊讶的结果。例如,
np.array([np.inf]).astype(int)
输出
array([-9223372036854775808])
。在我的机器上,
np.array([np.inf]).astype(int)
,和
np.array([np.nan]).astype(int)
都返回相同的内容。为什么?@BallpointBen:
nan
inf
是浮点值,不能有意义地转换为int。正如您前面的评论所指出的,会有令人惊讶的行为,我认为精确的行为没有定义好。如果要将
nan
inf
映射到某些值,则需要自己进行映射。请注意,x.astype(int)[0][0]不是
int
类型。这是
numpy.int32
。请注意,尽管这确实会将数组转换为int,@fhtuft的回答可能会减少意外
>>> 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]])
>>> np.asarray([1,2,3,4], dtype=int)
array([1, 2, 3, 4])
>>> 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