Numpy Ceil和Floor" out"争论

时间:2013-11-18 06:36:19

标签: python numpy

从NumPy docs for ceilnumpy.ceil函数有两个参数,第二个是out。文档没有说明这个out参数是做什么的,但我假设你可以设置这个函数返回的输出类型,但是我无法让它工作:

In [107]: np.ceil(5.5, 'int')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-107-c05bcf9f1522> in <module>()
----> 1 np.ceil(5.5, 'int')

TypeError: return arrays must be of ArrayType

In [108]: np.ceil(5.5, 'int64')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-108-0937d09b0433> in <module>()
----> 1 np.ceil(5.5, 'int64')

TypeError: return arrays must be of ArrayType

是否可以使用此参数使np.ceil返回整数?

感谢。

3 个答案:

答案 0 :(得分:8)

out是输出数组(必须与输入具有相同的形状)。

如果您将其构建为所需的dtype,那么您将获得dtype

>>> arr = np.array([5.5, -7.2])
>>> out = np.empty_like(arr, dtype=np.int64)
>>> np.ceil(arr, out)
array([ 6, -7], dtype=int64)
>>> out
array([ 6, -7], dtype=int64)

答案 1 :(得分:4)

np.ceilufuncs之一。此类别的一般文档是:

op(X, out=None)
Apply op to X elementwise

Parameters
----------
X : array_like
    Input array.
out : array_like
    An array to store the output. Must be the same shape as `X`.

Returns
-------
r : array_like
    `r` will have the same shape as `X`; if out is provided, `r`
    will be equal to out.

outr是获取函数输出的不同方法。最简单的是让函数返回值。但有时你可能想要给它填充数组out。控制dtype是使用out的一个原因。另一个是通过'重用'已经存在的数组来节省内存。

np.ceil返回的数组也可以转换为您想要的类型,例如np.ceil(x).astype('int')

答案 2 :(得分:1)

您没有指定退货类型。 试试这个

np.int64(np.ceil(5.5))
np.int(np.ceil(5.5))
np.int(np.ceil(-7.2))