似乎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()不能做的简单吗?是否只是为了一个注释目的而向代码读者强调你正在创建一个未初始化的数组?
答案 0 :(得分:3)
始终使用np.empty
。 np.ndarray
是构造数组的低级方法。它由np.empty
或np.array
使用。 np.ndarray
公开了一些你不应该(不小心)自己使用的细节。
来自docstring:
文档字符串:
ndarray(shape,dtype = float,buffer = None,offset = 0, strides = None,order = None)
数组对象表示多维同构数组 固定大小的物品。关联的数据类型对象描述了 数组中每个元素的格式(字节顺序,它有多少字节) 占用内存,无论是整数,浮点数, 或其他等等。)
应使用
array
,zeros
或empty
构建数组(请参阅 参见下面的“另见”部分。这里给出的参数是指 用于实例化数组的低级方法(ndarray(...)
)。有关更多信息,请参阅
numpy
模块并查看 数组的方法和属性。
获取文档字符串:
>>> help(np.ndarray)
或在IPython中:
In: [1] np.ndarray?
修改强>
正如@hpaulj在评论中指出的那样,阅读所有相关文档很有用。总是更喜欢zeros
而不是empty
,除非您有充分理由不这样做。来自empty
:
注释
与empty
不同,
zeros
不会将数组值设置为零, 因此可能会略微加快。另一方面,它需要 用户手动设置数组中的所有值,应该是 谨慎使用。