numpy.mpray()上numpy.empty()的目的是什么?

时间:2015-12-12 12:27:38

标签: numpy

似乎numpy.empty()可以做的任何事情都可以使用numpy.ndarray()轻松完成,例如:

>>> np.empty(shape=(2, 2), dtype=np.dtype('double'))
array([[ 0.,  0.],
       [ 0.,  0.]])
>>> np.ndarray(shape=(2, 2), dtype=np.dtype('double'))
array([[ 0.,  0.],
       [ 0.,  0.]])
>>>

为什么我们需要numpy.empty()?它可以做一些numpy.ndarray()不能做的简单吗?是否只是为了一个注释目​​的而向代码读者强调你正在创建一个未初始化的数组?

1 个答案:

答案 0 :(得分:3)

始终使用np.emptynp.ndarray是构造数组的低级方法。它由np.emptynp.array使用。 np.ndarray公开了一些你不应该(不小心)自己使用的细节。

来自docstring:

  

文档字符串:

     

ndarray(shape,dtype = float,buffer = None,offset = 0,           strides = None,order = None)

     

数组对象表示多维同构数组   固定大小的物品。关联的数据类型对象描述了   数组中每个元素的格式(字节顺序,它有多少字节)   占用内存,无论是整数,浮点数,   或其他等等。)

     

应使用arrayzerosempty构建数组(请参阅   参见下面的“另见”部分。这里给出的参数是指   用于实例化数组的低级方法(ndarray(...))。

     

有关更多信息,请参阅numpy模块并查看   数组的方法和属性。

获取文档字符串:

>>> help(np.ndarray)

或在IPython中:

In: [1] np.ndarray?

修改

正如@hpaulj在评论中指出的那样,阅读所有相关文档很有用。总是更喜欢zeros而不是empty,除非您有充分理由不这样做。来自empty

的文件
  

注释

           与empty不同,

zeros不会将数组值设置为零,   因此可能会略微加快。另一方面,它需要   用户手动设置数组中的所有值,应该是   谨慎使用。