numpy.arange里的a是什么?

ki0zmccv  于 2023-02-19  发布在  其他
关注(0)|答案(3)|浏览(149)

numpy的numpy.arange方法中的'a'代表什么?它与Python内置的range方法生成的简单range有什么不同(定义上,不是性能之类的)?
我试着在网上寻找这个问题的答案,但我找到的都是GeeksForGeeks and co提供的如何使用numpy.arange的教程。

xxls0lw8

xxls0lw81#

您可以检查返回类型并推断它的含义:

print(type(range(0,5))) 
import numpy as np  
print(type(np.arange(0,5)))

其中打印:

<class 'range'>
<class 'numpy.ndarray'>

这里有一个相关的问题:Why was the name "arange" chosen for the numpy function?
1.有些人做from numpy import *,这会隐藏range,从而导致问题。
1.未选择将函数命名为arrayrange,因为它太长,无法键入。

3mpgtkmj

3mpgtkmj2#

“a”代表numpy.arange中的“array”。numpy.arange是一个函数,它在给定的区间内生成一个序列数数组。它与Python内置的range()函数的不同之处在于,它可以处理浮点数以及任意步长。此外,numpy.arange的输出是一个元素数组,而不是一个range对象。

vfhzx4xs

vfhzx4xs3#

从前面的SO中我们了解到,在某种意义上,'a'代表'array'。arange是一个函数,它返回一个numpy数组,至少在简单的情况下,类似于list(range(...))生成的列表。
对于整型参数,该函数大致等同于Python内置的range,但是返回一个ndarray而不是range示例。

In [104]: list(range(-3,10,2))
Out[104]: [-3, -1, 1, 3, 5, 7, 9]

In [105]: np.arange(-3,10,2)
Out[105]: array([-3, -1,  1,  3,  5,  7,  9])

在py 3中,range本身是“未求值的”,它就像生成器一样,它相当于py 2x 1 m4n1x。
最好的“定义”是官方文档页面:
https://numpy.org/doc/stable/reference/generated/numpy.arange.html
但是也许你想知道什么时候使用一个或者另一个,简单的答案是-如果你正在做python级别的迭代,range通常更好,如果你需要一个数组,使用arange(或者np.linspace,如文档所建议的)。

In [106]: [x**2 for x in range(5)]
Out[106]: [0, 1, 4, 9, 16]

In [107]: np.arange(5)**2
Out[107]: array([ 0,  1,  4,  9, 16])

我经常使用arange创建一个示例数组,如下所示:

In [108]: np.arange(12).reshape(3,4)
Out[108]: 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

虽然可以从range(例如np.array(range(5)))制作阵列,但相对较慢。np.fromiter(range(5),int)较快,但仍不如直接np.arange好。

相关问题